可以在SWT中创建一个可聚焦的组合吗?我通过Display filter捕获所有键盘事件,但是当焦点在树或列表上时会出现一些问题-GTK+的默认操作是在控件的内容中搜索。
我想做的是将SWT和AWT与可聚焦的AWT组件混合在一起。我设法使AWT小部件变得不可聚焦,并添加了显示过滤器以使AWT组件接收键盘事件(但不是直接接收),即使它没有被聚焦。但是当一些SWT控件被聚焦时会有几个问题--这就是为什么我想让复合控件成为可聚焦的原因。
所以我的最后一个问题是:有没有可能让SWT组合成为可聚焦的?
发布于 2014-02-23 01:45:39
如果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();
}
});
https://stackoverflow.com/questions/16921614
复制相似问题