首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到控件失去焦点的原因

问如何找到控件失去焦点的原因
EN

Stack Overflow用户
提问于 2013-06-25 02:18:16
回答 2查看 725关注 0票数 3

我有一堆控件、视图和编辑器。我发现编辑器有时会失去焦点。这个问题很难在调试中重现,因为当我在调试器中切换到断点并返回到应用程序时,编辑器永远不会失去焦点。

你能推荐一些提示和技巧如何找到控件失去焦点的原因吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-25 03:54:18

在@david的回答中添加一些上下文:

你可以添加一个FocusListener到你所有的Widget中。在这个监听器中,你可以输出一些关于失去/获得焦点的小部件的信息。

为了简单起见,可以使用Widget#setData(Object)将元数据添加到Widget中。

下面是一个代码示例,可以帮助您弄清楚这些问题:

代码语言:javascript
复制
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()的利用率...

票数 5
EN

Stack Overflow用户

发布于 2013-06-25 02:38:06

是否添加发送日志消息的焦点侦听器?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17282243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档