选择按钮时如何使不同的窗格可见?
How do I make different panes visible when button selected?
所以这是我遇到的问题:我有 3 个按钮,当我按下 3 个按钮之一时,新场景将显示。然而,我似乎无法弄清楚如何根据按下哪个按钮使不同的窗格显示可见。执行此操作的最佳方法是什么?我如何使用来自不同场景控制器的 ID 来更改主场景按钮侦听器中窗格的属性?
目前在我的主控制器上,当每个按钮被释放时,下面的动作侦听器将执行并显示 secondscreen.fxml。 secondscreen.fxml 有 2 个不同的窗格,具体取决于按下哪个按钮,我需要将 2 个痛苦中的 1 个设置为可见。
@FXML
public void handleButtonAction(MouseEvent event) {
Parent root;
try {
root = FXMLLoader.load(getClass().getResource("secondscreen.fxml"));
Stage stage = new Stage();
stage.setTitle("title");
stage.setScene(new Scene(root));
stage.show();
((Node)(event.getSource())).getScene().getWindow();
} catch (Exception e) {
e.printStackTrace();
}
}
加载视图后,您可以访问其控制器。
请记住,您的控制器必须分配给您的 fxml 文件 fx:controller="your.package.SecondScreenController.java"
FXMLLoader loader = new FXMLLoader.load(getClass().getResource("secondscreen.fxml"));
// load view
Parent root = loader.load();
// after view is loaded, access its controller
SecondScreenController controller = (SecondScreenController) loader.getController();
// modify view using methods on your controller
controller.setTabIndex(0)
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();
所以这是我遇到的问题:我有 3 个按钮,当我按下 3 个按钮之一时,新场景将显示。然而,我似乎无法弄清楚如何根据按下哪个按钮使不同的窗格显示可见。执行此操作的最佳方法是什么?我如何使用来自不同场景控制器的 ID 来更改主场景按钮侦听器中窗格的属性?
目前在我的主控制器上,当每个按钮被释放时,下面的动作侦听器将执行并显示 secondscreen.fxml。 secondscreen.fxml 有 2 个不同的窗格,具体取决于按下哪个按钮,我需要将 2 个痛苦中的 1 个设置为可见。
@FXML
public void handleButtonAction(MouseEvent event) {
Parent root;
try {
root = FXMLLoader.load(getClass().getResource("secondscreen.fxml"));
Stage stage = new Stage();
stage.setTitle("title");
stage.setScene(new Scene(root));
stage.show();
((Node)(event.getSource())).getScene().getWindow();
} catch (Exception e) {
e.printStackTrace();
}
}
加载视图后,您可以访问其控制器。
请记住,您的控制器必须分配给您的 fxml 文件 fx:controller="your.package.SecondScreenController.java"
FXMLLoader loader = new FXMLLoader.load(getClass().getResource("secondscreen.fxml"));
// load view
Parent root = loader.load();
// after view is loaded, access its controller
SecondScreenController controller = (SecondScreenController) loader.getController();
// modify view using methods on your controller
controller.setTabIndex(0)
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();