【发布时间】:2023-03-04 06:32:02
【问题描述】:
以下代码生成一个JFrame,其中包含一个JFXPanel 和一个JPanel。每个面板都包含一个文本字段。
JFXPanel fxPanel = new JFXPanel();
JPanel swingPanel = new JPanel(new FlowLayout());
swingPanel.add(new JTextField("Swing"));
JPanel contentPanel = new JPanel(new BorderLayout());
contentPanel.add(fxPanel, BorderLayout.PAGE_START);
contentPanel.add(swingPanel, BorderLayout.CENTER);
JFrame frame = new JFrame("Main Frame");
frame.setContentPane(contentPanel);
FlowPane root = new FlowPane();
root.getChildren().add(new TextField("FX"));
Scene scene = new Scene(root);
Platform.runLater(() -> fxPanel.setScene(scene));
SwingUtilities.invokeLater(() -> frame.setVisible(true));
假设我们以 Swing 文本字段为焦点开始。然后假设我在JFXPanel 内单击(但不在其文本字段的范围内)。 JFXPanel 将焦点放在TextField。
为什么会这样?为什么 JFXPanel 不保持自己的焦点?为什么将它提供给文本字段?它如何选择要关注的组件?防止它把焦点放在文本字段上的正确方法是什么?
【问题讨论】:
标签: java swing javafx javafx-8 jfxpanel