2016-03-08 73 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月,感謝您的幫助。我不知道我可以加載不同的控制器。 –

相關問題