java - 从子目录膨胀 FXML

标签 java javafx fxml

我有一个 Launcher 类,我想用它来打开一个新窗口。

从启动器的 main 中,我正在调用:

ChatList chatList = new ChatList(communicator);

ChatList 的构造函数调用方法 showChatList(),我在其中尝试膨胀 FXML 文档:

    private void showChatList() {
    try {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml/ChatList.fxml"));
        Parent root = (Parent) fxmlLoader.load();
        Stage stage = new Stage();
        stage.setScene(new Scene(root));
        stage.show();
    } catch(Exception e) {
        e.printStackTrace();
    }
}

但是,我在调用 fxmlLoader.load() 时收到 java.lang.IllegalStateException: Location is not set. 。我的项目文件结构如下:

project structure

我尝试将绝对文件路径放入 FXML 文件,但仍然没有成功。

任何人都可以帮助我理解在 JavaFX 中膨胀 FXML(具有多个阶段)背后的一般原理吗,或者向我指出他们遇到的一个很好的资源。

干杯。

最佳答案

我知道这是一个老问题,但也许可以帮助别人。

你必须写下fxml的所有路径。 你的情况是:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/client/fxml/ChatList.fxml"));

另一个例子: Youproject/Src/parentpackage/childpackage/fxmlToGet.fxml

如果你想获取子包中的fxml,你必须编写:

FXMLLoader(getClass().getResource("/parentpackage/childpackage/fxmlToGet.fxml"));

关于java - 从子目录膨胀 FXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141243/

相关文章:

java - 字符算术 --- 基数 8 与基数 10

java - 配置 Java 企业应用程序的最佳方式

javafx - 无法运行 JavaFX - Kotlin 应用程序

java - 以编程方式设置 Controller 时为 "No Controller specified for top level element"

java - 如何使用DBFlow进行迁移?

java - 将 Eclipse NAT 表导出到 CSV/Excel

java.lang.IllegalArgumentException : plexus.container.default:无效的模块名称: 'default'不是Java标识符

maven - 填充 JavaFX ListView

java - javafx HTML 编辑器中的表格工具

JavaFX 更改标签文本