我有很多控件,视图和编辑器。我发现编辑有时会失去焦点。 这个问题很难在调试中重现,因为当我在调试器中切换到断点并返回应用程序时,编辑器永远不会失去焦点。
你能推荐一下吗?如何找到控制失去焦点的技巧?
答案 0 :(得分:5)
在@ david的回答中添加一些上下文:
您可以为所有FocusListener
添加Widget
。在此侦听器中,您可以输出有关丢失/获得焦点的窗口小部件的一些信息。
为方便起见,您可以使用Widget
将元数据添加到Widget#setData(Object)
。
这是一个代码示例,可以帮助您解决问题:
public static void main(String[] args)
{
Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout());
FocusListener focusListener = new FocusListener()
{
@Override
public void focusLost(FocusEvent e)
{
System.out.println("Focus out: " + e.widget.getData());
}
@Override
public void focusGained(FocusEvent e)
{
System.out.println("Focus in: " + e.widget.getData());
}
};
Text text = new Text(shell, SWT.BORDER);
text.setText("Text");
text.setData("Text");
text.addFocusListener(focusListener);
Button button = new Button(shell, SWT.PUSH);
button.setText("Button");
button.setData("Button");
button.addFocusListener(focusListener);
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
请注意setData()
和getData()
...
答案 1 :(得分:3)
添加发送日志消息的焦点侦听器?