我有一个Java应用程序,其中显示了一个包含文本字段的弹出窗口。我故意保持这个弹出可见,即使当用户点击远离它。除了一种情况外,这是很好的:
当用户关注弹出窗口中的文本字段时,单击单独的应用程序,然后单击回文本字段。FX应用程序并没有重新获得操作系统的关注。如果用户在键盘上键入,则其他应用程序仍将接收键盘输入。要解决这个问题,用户必须单击弹出窗口外的主FX应用程序窗口。
奇怪的是,在调试过程中,我可以看到弹出窗口中的文本字段正在获得焦点,但是OS并没有显示FX应用程序现在是焦点。有什么方法可以迫使操作系统将焦点转移到我的应用程序上吗?
这种情况发生在Windows和Mac上。我用jdk 8更新45和jdk 8更新92进行了测试。
我用最小的弹出窗口做了一个测试:
static class TestPopup extends Popup {
TestPopup() {
content.add(new TextField("Hello"))
}
}
我打电话给你看:
new TestPopup().show(somePaneInMainWindow, 0, 0)
发布于 2016-06-01 18:15:42
经过一些研究,我发现这是预期的行为。
在这里找到答案:id=8123137
从链接中:
这是正确的行为。所有的JavaFX弹出窗口都是不可聚焦的,因此它们只能在所有者窗口当前聚焦的情况下接收输入。弹出窗口通常设置为自动隐藏,当所有者失去焦点,但这不是在这个测试的情况下,所以弹出只是停留在周围。
https://stackoverflow.com/questions/37553571
复制相似问题