我构建了一个工作正常的应用程序,并且必须做大量的解决方法才能通过"而不是FX线程"东西,但总的来说我认为我处理得很好。无论如何,我现在正在寻找制作我所做的第一个应用程序的v2.0应用程序,与我迄今为止学到的内容相比要好得多。
令我感到困惑的一件事就是启动项目,在我开始我的FXML项目时使用netBeans我会看到3个文件:
FXMLDocument.fxml
FXMLDocumentController.java
(app name).java
现在,我理解前两个,它们已经链接在一起,基本上控制器只是使FXML文档中创建的所有GUI元素都能正常工作,但我似乎无法链接第三个文件, (appname).java文件,它包含始终调用的start和main方法,并从那里加载FXML文件,但是我的第一个应用程序在此文件中没有一行(除了它已经带来的那些)开始一个新项目),我认为这可能不是一个好习惯 我的问题是,拥有这3个文件,如何将FXMLController与(appname).java文件连接起来?例如,如果我按下一个按钮,我怎么能做它在(appname).java文件而不是FXMLController文件中编码的东西?这有可能吗?
答案 0 :(得分:1)
(app name).java文件是你的主类,这是你的应用程序的入口点,这个类将调用FXML,随后FXML调用Controller。
要访问FXMLController,您需要确保首先加载它,在调用它之前无法访问它(它将返回nullExceptionError)。
加载到舞台后,您可以通过以下方式调用它:
private final FXMLLoader fxml = new FXMLLoader(getClass().getResource("fxmlnamehere.fxml"));
public void start(Stage mainStage) throws Exception {
fxmlcontent = fxml.load();
root = new Scene(fxmlcontent,width,height);
mainStage.setScene(root);
mainStage.show();
FXMLDocumentController controller = fxml.<FXMLDocumentController>getController();
}
这将使controller
调用FXMLDocumentController类中的信息,只需注意FXMLDocumentController将被控制器类的名称替换,无论您决定调用它。
在您的(应用程序名称)中执行一个函数。来自控制器类的.java文件要简单得多,请确保您要使用的函数是公共的,然后在控制器类中使用appName.functionName();
这将执行函数functionName()与appName(又名(app name).java)。