使复合可以在SWT中集中

是否可以在SWT中创建可聚焦的复合材料? 我通过显示filter捕获所有键盘事件,但是当焦点在树或列表上时存在一些问题 – GTK +的默认操作是搜索控件的内容。

我想要做的是将SWT和AWT与可聚焦的AWT组件混合。 我设法让AWT小部件无法对焦,我添加了显示filter,使AWT组件接收键盘事件(但不是直接),即使它没有聚焦。 但是当一些SWT控件被聚焦时有几个问题 – 这就是为什么我想让复合可聚焦。

所以我的最后一个问题是:是否有可能使SWT复合成为可调焦的?

如果Composite包含子窗口小部件,则默认操作是在选中它时放弃焦点。 为了避免这种情况,首先要扩展Composite类:

 class FocusableComposite extends Composite { public FocusableComposite(Composite parent, int style) { super(parent, style); } public boolean setFocus() { return super.forceFocus(); } } 

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

 Composite composite = new FocusableComposite(shell, SWT.NONE); composite.addMouseListener(new MouseAdapter() { public void mouseDown(MouseEvent event) { ((Composite)event.widget).setFocus(); } });