我有一堆控件、视图和编辑器。我发现编辑器有时会失去焦点。这个问题很难在调试中重现,因为当我在调试器中切换到断点并返回到应用程序时,编辑器永远不会失去焦点。
你能推荐一些提示和技巧如何找到控件失去焦点的原因吗?
发布于 2013-06-25 03:54:18
在@david的回答中添加一些上下文:
你可以添加一个FocusListener到你所有的Widget中。在这个监听器中,你可以输出一些关于失去/获得焦点的小部件的信息。
为了简单起见,可以使用Widget#setData(Object)将元数据添加到Widget中。
下面是一个代码示例,可以帮助您弄清楚这些问题:
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()的利用率...
发布于 2013-06-25 02:38:06
是否添加发送日志消息的焦点侦听器?
https://stackoverflow.com/questions/17282243
复制相似问题