Javafx小部件在切换FXML后没有响应
我的javafx应用程序必须在选择组合框中的项目后切换其FXML文件。但是,组合框在切换后停止响应,但FXML添加的其他项目继续工作。我必须最小化和最大化应用程序以使其工作,或者使用FXML添加的小部件使其响应Javafx小部件在切换FXML后没有响应,java,fxml,javafx-11,Java,Fxml,Javafx 11,我的javafx应用程序必须在选择组合框中的项目后切换其FXML文件。但是,组合框在切换后停止响应,但FXML添加的其他项目继续工作。我必须最小化和最大化应用程序以使其工作,或者使用FXML添加的小部件使其响应 comboBox.setOnAction(event -> { calculatorType = comboBox.getValue(); switch (calculatorType) { case "Basic&
comboBox.setOnAction(event -> {
calculatorType = comboBox.getValue();
switch (calculatorType) {
case "Basic":
System.out.println(root.getChildren());
root.getChildren().clear();
try {
stage.setMinWidth(430);
stage.setMinHeight(530);
stage.setMaxWidth(430);
stage.setMinHeight(530);
//root.getChildren().remove(comboBox);
root.getChildren().add(FXMLLoader.load(getClass().getResource("/Calculator/Resources" +
"/BasicCalculator.fxml")));
comboBox.setLayoutX(320);
comboBox.setLayoutY(0);
root.getChildren().add(comboBox);
} catch (IOException e) {
e.printStackTrace();
}
break;
case "Scientific":
root.getChildren().clear();
try {
stage.setMinHeight(530);
stage.setMinWidth(780);
stage.setMaxHeight(530);
stage.setMaxWidth(780);
root.getChildren().add(FXMLLoader.load(getClass().getResource("/Calculator/Resources/" +
"ScientificCalculator.fxml")));
comboBox.setLayoutX(675);
comboBox.setLayoutY(0);
root.getChildren().add(comboBox);
} catch (IOException e) {
e.printStackTrace();
}
break;
case "Converter":
root.getChildren().clear();
stage.setMinHeight(530);
stage.setMinWidth(430);
stage.setMaxHeight(530);
stage.setMaxWidth(430);
try {
root.getChildren().add(FXMLLoader.load(getClass().getResource("/Calculator/Resources/" +
"Converter.fxml")));
} catch (IOException e) {
e.printStackTrace();
}
comboBox.setLayoutX(320);
comboBox.setLayoutY(0);
root.getChildren().add(ComboPane);
break;
}
});
组合框在main中
组合框的代码:
ComboBox<String> comboBox = new ComboBox<>();
comboBox.getStylesheets().add("Calculator/Resources/Styles/ComboBox.css");
comboBox.getItems().add("Basic");
comboBox.getItems().add("Scientific");
comboBox.getItems().add("Converter");
comboBox.getSelectionModel().select(0);
comboBox.setLayoutX(320);
comboBox.setLayoutY(0);
ComboBox-ComboBox=新的ComboBox();
getStylesheets().add(“Calculator/Resources/Styles/comboBox.css”);
comboBox.getItems()添加(“基本”);
comboBox.getItems().add(“科学”);
comboBox.getItems()添加(“转换器”);
comboBox.getSelectionModel().select(0);
comboBox.setLayoutX(320);
comboBox.setLayoutY(0);
谢谢。我建议您使用不同的设计。以下是两种可能性
- 通过调用方法,使每种类型的计算器成为一个单独的、只需切换
s的计算器。请注意,您可能需要将Scene
添加到每个组合框
场景
- 或者,将每个计算器设置为单独的,并将每个
添加到一个计算器中。通过使所选计算器的窗格
和所有其他窗格不可见,在计算器窗格
之间切换窗格
- 通过调用方法,使每种类型的计算器成为一个单独的、只需切换
s的计算器。请注意,您可能需要将Scene
添加到每个组合框
场景
- 或者,将每个计算器设置为单独的,并将每个
添加到一个计算器中。通过使所选计算器的窗格
和所有其他窗格不可见,在计算器窗格
之间切换窗格
- 我建议您使用不同的设计。以下是两种可能性