2017-08-16 90 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

相关问题