首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使复合焦点在SWT中可用

使复合焦点在SWT中可用
EN

Stack Overflow用户
提问于 2013-06-04 23:22:01
回答 1查看 2K关注 0票数 19

可以在SWT中创建一个可聚焦的组合吗?我通过Display filter捕获所有键盘事件,但是当焦点在树或列表上时会出现一些问题-GTK+的默认操作是在控件的内容中搜索。

我想做的是将SWT和AWT与可聚焦的AWT组件混合在一起。我设法使AWT小部件变得不可聚焦,并添加了显示过滤器以使AWT组件接收键盘事件(但不是直接接收),即使它没有被聚焦。但是当一些SWT控件被聚焦时会有几个问题--这就是为什么我想让复合控件成为可聚焦的原因。

所以我的最后一个问题是:有没有可能让SWT组合成为可聚焦的?

EN

回答 1

Stack Overflow用户

发布于 2014-02-23 01:45:39

如果Composite包含子小部件,则默认操作是在选中它时放弃焦点。要绕过这个问题,首先要扩展Composite类:

代码语言:javascript
复制
class FocusableComposite extends Composite
{
    public FocusableComposite(Composite parent, int style)
    {
        super(parent, style);
    }

    public boolean setFocus()
    {
        return super.forceFocus();
    }
}

然后在FocusableComposite的新实例化上使用MouseListener,以便在单击该Composite时直接调用setFocus():

代码语言:javascript
复制
Composite composite = new FocusableComposite(shell, SWT.NONE);

composite.addMouseListener(new MouseAdapter()
{
    public void mouseDown(MouseEvent event)
    {
        ((Composite)event.widget).setFocus();
    }
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16921614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档