Java FX 8 Popup不会将焦点移回应用程序

时间:2016-05-31 18:56:43

标签: javafx

我有一个Java FX应用程序,其中显示包含文本字段的Popup。即使用户点击它,我也会故意保持此弹出窗口可见。除了一个案例之外,这个工作正常:

当用户专注于弹出窗口中的文本字段时,单击单独的应用程序,然后单击返回文本字段。 FX应用程序无法从操作系统重新获得关注。如果用户在键盘上键入,则另一个应用程序仍将接收键盘输入。要解决此问题,用户必须单击弹出窗口外的主FX应用程序窗口。

奇怪的是,在调试中,我可以看到Popup中的文本字段正在获得焦点,但操作系统并未显示FX应用程序现在处于焦点。有没有办法可以强制操作系统将焦点转移到我的应用程序?

这种情况发生在Windows和Mac上。我测试了jdk 8 update 45和jdk 8 update 92。

我用最少的Popup进行了测试:

static class TestPopup extends Popup {
        TestPopup() {
            content.add(new TextField("Hello"))
        }
    }

我通过致电来表明:

new TestPopup().show(somePaneInMainWindow, 0, 0)

1 个答案:

答案 0 :(得分:0)

经过一番研究后,我发现这是预期的行为。

在此处找到答案: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8123137

从链接:

  

这是正确的行为。所有JavaFX弹出窗口都是   不可聚焦,所以只有在所有者窗口的情况下,它们才能接收输入   目前专注。通常弹出窗口设置为自动隐藏,当主人   没有重点,但在这个测试中不是这样,所以弹出窗口   只是呆在那里。