Swing JavaFX ChoiceBox上下文菜单在再次显示和单击时再次显示
我在Swing应用程序中使用了带有ChoiceBox的JavaFX面板。ChoiceBox的标准行为是,当您第一次单击它时,将显示带有项目的弹出菜单;当您第二次单击ChoiceBox时,弹出菜单将隐藏。但当您将其放入Swing应用程序时,第二次单击会导致弹出窗口隐藏并立即再次显示。我如何防止这种行为Swing JavaFX ChoiceBox上下文菜单在再次显示和单击时再次显示,swing,javafx,Swing,Javafx,我在Swing应用程序中使用了带有ChoiceBox的JavaFX面板。ChoiceBox的标准行为是,当您第一次单击它时,将显示带有项目的弹出菜单;当您第二次单击ChoiceBox时,弹出菜单将隐藏。但当您将其放入Swing应用程序时,第二次单击会导致弹出窗口隐藏并立即再次显示。我如何防止这种行为 public class ComboTest { private static void initAndShowGUI() { JFrame frame = new JFr
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);
}
}
我怀疑,当我第二次单击choicebox时,弹出窗口会失去焦点,导致其隐藏,然后choicebox会处理鼠标单击并再次显示弹出窗口。我认为此问题是由现有的
choicebox
造成的。
最简单的修复方法是使用:
ComboBox choiceBox=新的ComboBox(FXCollections.observableArrayList(“项目1”、“项目2”);
ComboBox<String> choiceBox = new ComboBox<>(FXCollections.observableArrayList("item 1", "item 2"));