2017-08-16 73 views
-1

我嘗試開發一個應用程序,並使用Eclipse。Java FX - 將第二個fxml文件關聯到第二個控制器文件

首先我曾在四個文件:

  • Main.java,通過使用sheet1.fxml文件

  • MyController.java啓動界面,聲明按鈕和fxml文件的錨點sheet1。該文件執行一個動作事件:在點擊第一個fxml文件的按鈕(即sheet1)後,繼續第二個界面(sheet2.fxml)。

現在我想在第二個接口sheet2.fxml上工作。我想:
- 添加基於文件的計數文本文件夾
中 - 爲了去第三接口

上創建按鈕,但我的問題是,我該怎麼辦?
我試圖創建第二個控制器,使文本nbExcel和按鈕的聲明,然後建立與sheet2.fxml文件的關係,但我沒有看到訣竅。
如何關聯運行位於sheet2上的組件和該新控制器的事件?

我開始做的 「myController2」:

 public class myController2 extends Application { 

     // How and where to associate that controller with the fxml file "sheet2" ? 

     public void start2() throws IOException{ 
     Stage primaryStage2 = new Stage(); 

     Parent root = FXMLLoader.load(getClass().getResource("sheet1.fxml")); 
     Scene scene = new Scene(root,400,400); 

scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     primaryStage2.setScene(scene); 
     primaryStage2.show(); 
     } 

     @FXML 
     // declaration text in order to count files in folder in sheet2 interface 
     private Text nbExcel; 

     // declaration action buttons in sheet2 interface 
     // To do 


     // 1 - INITIALISATION 
     public void initialize(URL location, ResourceBundle resources) { 

      File a = new File("C:/Controles/Excel"); 
      int b = 0; 
      for (File file : a.listFiles()) { 
      if (file.isFile() && (file.getName().endsWith(".xlsx"))) { 
       b++; 
      } 
      } 
      nbExcel.setText(Integer.toString(b)); 
     } 

任何幫助將非常感激。
謝謝!

+0

請編寫[一個最簡單,完整且可驗證的示例](https://stackoverflow.com/help/mcve)。我沒有讀過你的代碼,因爲它太長了,我相信90%的代碼是不必要的混亂。 – Michael

+0

此外,您似乎需要幫助的部分是您*未發佈的部分,但只是試圖描述。代碼描述很少有用。 「我應該爲每張紙創建另一個控制器類嗎?」:是的。每個FXML文件都應該有自己的控制器類。 –

+0

好的,我很抱歉..我在第一篇文章中做了編輯。非常感謝您的幫助 – Julien

回答

0

爲了連接FXML文件並創建新的場景,你可以做這樣的事情:

 Stage primaryStage = new Stage(); 

     Parent root = FXMLLoader.load(getClass().getResource("/application/sheet2.fxml")); 
     Scene scene = new Scene(root,400,400); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

編輯:爲了證實這段代碼應該是您在顯示控制器類的題。

+0

感謝您的幫助。我把你的代碼片段放入一個公共空白(請參閱我的編輯),但它不起作用。新的控制器似乎沒有與fxml文件關聯..謝謝 – Julien

+0

嗯。我真的不知道那是什麼問題。如果你使用它,也許你需要在SceneBuilder中連接它們。 @Julien – KobiF

+0

我在** myController2 **中粘貼了「View - Show Sample Controller Skeleton」的內容,但不幸的是結果相同。 – Julien

相關問題