2016-03-08 40 views
0

所以这里是我遇到的问题:我有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(); 
    } 
} 
+0

除了建议你用['TabPane'](http://docs.oracle.com/javase/8 /javafx/api/javafx/scene/control/TabPane.html),您可以发布一些代码来了解您已有的功能吗?否则,有太多的方法可以做到这一点,而这个问题实在太广泛了。 –

+0

詹姆斯做了我的编辑帮助,澄清了我正在努力完成的事情。选项卡窗格不是一个选项。 –

回答

0

加载视图后,您可以访问其控制器。

请记住,你的控制器必须asigned您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(); 
+0

1月,感谢您的帮助。我不知道我可以加载不同的控制器。 –

相关问题