在javafx中,从另一个包加载FXML文件时是否出现错误?
我在从不同的包加载fxml文件时遇到问题 项目结构在javafx中,从另一个包加载FXML文件时是否出现错误?,java,eclipse,javafx,fxml,Java,Eclipse,Javafx,Fxml,我在从不同的包加载fxml文件时遇到问题 项目结构 加载FXML文件PlayArea.java的类如下所示: package controller; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; /** * * @author ba
加载FXML文件PlayArea.java的类如下所示:
package controller;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
*
* @author badar
*/
public class PlayArea extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/gui/FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
我的fxml文件是FXMLDocument.fxml
编辑:
错误消息:
如果右键单击并打开该文件,您可以在fxml文件本身中设置控制器。您将在该文件中找到属性,在那里您将有一个名为controller的标记,您可以键入确切的文件夹路径 FXML EG
问题出在您的这条线路上
Parent root = FXMLLoader.load(getClass().getResource("/gui/FXMLDocument.fxml"));
换成
Parent root = `FXMLLoader.load(getClass().getResource("../gui/FXMLDocument.fxml"));`
如果您仍然得到错误,那么
在包的外部创建一个文件,即在src文件夹中,比如说Main.class
现在用这个
fxmloader.load(Main.class.getResource(“gui/FXMLDocument.fxml”)代码>更新以前的答案
这是我们尝试过的,而且效果很好
Parent root = FXMLLoader.load(getClass().getResource("/fxml/Main.fxml"));
Scene scene = new Scene(root, 300, 275);
stage.setTitle("FXML Welcome");
stage.setScene(scene);
stage.show();
希望这能解决查询问题我必须更改两行,才能从另一个数据包中的控制器正确打开FXML文件:
root = loader.load(Main.class.getResource("document.fxml").openStream());
scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm());
这里没有getClass(),而是Main.class。确切的错误是什么?你能包括日志信息吗?假设找不到该文件,您是否尝试过将“gui/FXMLDocument.fxml”
作为路径字符串?可能是eclipse的问题,没有在类路径中包含fxml文件,但也可能是控制器类的问题,这是无法确定的,除非您发布错误消息+堆栈跟踪。@fabian请包含log@n247s我添加了错误消息。@fabian我包括了错误消息,这与问题中的fxml有何不同?这里也指定了fx:controller
属性,它似乎使用了正确的控制器类的完全限定类名。@Rahul请再次阅读我的问题!我已经在FXMLDocument.fxml中做了这件事,但问题是当我尝试在不同的包中使用时,它不起作用。问题仍然在这一行。第一次,当我仅在一个包中使用所有的.fxml和.java文件时,它工作得很好。但当我想分装时,它就不起作用了(谢谢你,先生!我意识到了我的问题。@Sudo,很乐意帮忙:)
root = loader.load(Main.class.getResource("document.fxml").openStream());
scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm());