【发布时间】:2017-06-23 08:09:49
【问题描述】:
我在 Swing 应用程序中有带有 ChoiceBox 的 JavaFX 面板。 ChoiceBox 的标准行为是,当您第一次单击它时,会显示带有项目的弹出菜单,而当您第二次单击 ChoiceBox 时,会隐藏弹出菜单。但是,当您将它放到 Swing 应用程序中时,第二次单击会导致弹出窗口隐藏并立即再次显示。如何防止这种行为?
public class ComboTest {
private static void initAndShowGUI() {
JFrame frame = new JFrame("FX");
final JFXPanel fxPanel = new JFXPanel();
fxPanel.setPreferredSize(new Dimension(100, 100));
frame.add(fxPanel);
frame.pack();
frame.setVisible(true);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
}
private static void initFX(JFXPanel fxPanel) {
// This method is invoked on JavaFX thread
Scene scene = createScene();
fxPanel.setScene(scene);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI();
}
});
}
private static Scene createScene() {
ChoiceBox choiceBox = new ChoiceBox(FXCollections.observableArrayList("item 1", "item 2"));
VBox vbox = new VBox(choiceBox);
return new Scene(vbox);
}
}
我的怀疑是,当我第二次单击选择框时,弹出框失去焦点,导致它隐藏,然后选择框处理鼠标单击并再次显示弹出框。
【问题讨论】: