问题:
每当弹出警报窗口时,都会导致无法输入的问题。
演示视频:链接
最小复制:inputTest.zip
创建一个新的Stage然后关闭它,即使焦点返回到初始Stage,输入组件可以获得焦点并调用输入法,但无法输入。我怀疑事件循环受到了新Stage的影响,导致系统无法正确处理事件循环。
我尝试过的:在警报关闭后手动将焦点锁定到输入字段:
alert.setOnHidden(evt -> {
Platform.runLater(() -> textField.requestFocus());
});
不幸的是,这仍然不起作用。
我也尝试过在网上搜索一个开源的JavaFX跨平台项目来寻找解决方案,但是我找到的所有项目都使用Gluon Glisten,我不想使用它。
解决方法:通过initOwner方法设置alert和mainstage之间的关系使alert关闭时正确处理事件循环