0
如果我将Swing嵌入到嵌入到Swing中的嵌入式JavaFX中,我确实遇到了控件焦点方面的问题。多次混合JavaFX和Swing时的焦点问题
摇摆 - 的JavaFX - 秋千
public EmbeddedTestWithFX() {
setSize(new Dimension(300, 300));
JTextArea textArea = new JTextArea();
textArea.setSize(new Dimension(150, 150));
JPanel container = new JPanel();
container.setLayout(null);
container.add(textArea);
JFXPanel jfxPanel = new JFXPanel();
Platform.runLater(() -> {
SwingNode swing = new SwingNode();
StackPane stack = new StackPane(swing);
Scene scene = new Scene(stack);
swing.setContent(container);
SwingUtilities.invokeLater(() -> jfxPanel.setScene(scene));
});
setContentPane(jfxPanel);
}
public static void main(String[] args) {
new EmbeddedTestWithFX().setVisible(true);
}
}
现在我可以看到文本区域,但问题是,它没有得到焦点。 如果我在TextArea上注册FocusListener,我发现它在点击后成为焦点,但它瞬间失去焦点。
但是,如果使用:
-Djavafx.embed.singleThread=true
的例子开始工作。我现在可以点击TextArea,它拥有焦点,我可以输入文本。
我真的不使用VM参数,因为它不是官方支持的虚拟机功能,因为它合并了Swing和JavaFX的两个应用程序线程。你知道,我的例子如何运作而不使用标志?
检查问题(S)/答案(S)约由@kleopatra – mKorbel 2014-10-28 14:58:55
搜索1小时后没有发现任何东西 - 你有暗示吗? @mKorbel – sialcasa 2014-10-28 18:00:20
[例.___](http://stackoverflow.com/users/203657/kleopatra?tab=questions) – mKorbel 2014-10-29 00:12:50