是否可以在 SWT 中创建可聚焦的复合材料?我正在通过显示过滤器捕获所有键盘事件,但是当焦点位于树或列表上时会出现一些问题 - GTK+ 的默认操作是搜索控件的内容。
我想做的是将 SWT 和 AWT 与可聚焦的 AWT 组件混合在一起。我设法使 AWT 小部件无法聚焦,并添加了显示过滤器以使 AWT 组件接收键盘事件(但不是直接),即使它没有聚焦。但是当一些 SWT 控件被聚焦时会出现一些问题——这就是我想让复合聚焦的原因。
所以我的最后一个问题是:是否有可能使 SWT 复合聚焦?
是否可以在 SWT 中创建可聚焦的复合材料?我正在通过显示过滤器捕获所有键盘事件,但是当焦点位于树或列表上时会出现一些问题 - GTK+ 的默认操作是搜索控件的内容。
我想做的是将 SWT 和 AWT 与可聚焦的 AWT 组件混合在一起。我设法使 AWT 小部件无法聚焦,并添加了显示过滤器以使 AWT 组件接收键盘事件(但不是直接),即使它没有聚焦。但是当一些 SWT 控件被聚焦时会出现一些问题——这就是我想让复合聚焦的原因。
所以我的最后一个问题是:是否有可能使 SWT 复合聚焦?
如果 aComposite
包含子小部件,则默认操作是在选中它时放弃焦点。为了避免这种情况,首先扩展Composite
类:
class FocusableComposite extends Composite
{
public FocusableComposite(Composite parent, int style)
{
super(parent, style);
}
public boolean setFocus()
{
return super.forceFocus();
}
}
然后MouseListener
在 FocusableComposite 的新实例上使用 a 在单击时直接调用 setFocus() Composite
:
Composite composite = new FocusableComposite(shell, SWT.NONE);
composite.addMouseListener(new MouseAdapter()
{
public void mouseDown(MouseEvent event)
{
((Composite)event.widget).setFocus();
}
});