当前位置: 首页 > 知识库问答 >
问题:

JavaFx在主gui中包含多个gui

阴高刚
2023-03-14

for(int i)for(int j)gridpane.add(“the_composed_view_in_the_other_fxml”,i,j)

共有1个答案

牛兴安
2023-03-14

如果我正确理解您的问题,您可以在“main”控制器的initialize方法中执行如下操作:

public class MainController {

    @FXML
    private GridPane gridpane ;

    public void initialize() throws IOException {
        int numCols = ... ;
        int numRows = ... ;

        for (int rowIndex = 0 ; rowIndex < numRows ; rowIndex++) {
            for (int colIndex = 0 ; colIndex < numCols ; colIndex++) {
                FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/addtional/fxml"));
                gridpane.add(loader.load(), colIndex, rowIndex);
            }
        }
    }
}

对于与从附加fxml文件加载的组件进行“交互”,附加fxml实际上是控制器的责任。在加载fxml文件后,可以获得对每个控制器的引用:

gridpane.add(loader.load(), colIndex, rowIndex);
AdditionalController controller = loader.getController();

然后可以调用在该控制器类中定义的方法。您还没有提供足够的细节来说明您可能想在这里做什么,但是,例如:

public class AdditionalController {

    @FXML
    private CheckBox checkBox ;

    public BooleanProperty selectedProperty() {
        return checkBox.selectedProperty();
    }

    // etc...
}
gridpane.add(loader.load(), colIndex, rowIndex);
AdditionalController controller = loader.getController();

String s = String.format("Item [%d, %d]", colIndex, rowIndex);
controller.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
    if (isNowSelected) {
        // process selection...
        System.out.println(s + " is selected");
    }
});
 类似资料:
  • 通过将以下代码片段复制到构建中,我使用netbeans创建了javafx独立应用程序。xml文件 我有x64位版本的jdk环境,所以它创建了只在x64位版本的窗口或操作系统中运行的应用程序。有人能告诉我应该如何改变部署方法,使应用程序在x86位系统上运行。默认情况下netbean占用了64位版本的jdk环境

  • 我已经和这件事斗争了一天多,在SO和其他地方读了很多帖子,但我仍然有问题。 我需要在一个自包含的JavaFX应用程序包中包含我的应用程序图标。我使用的是JDK1.8.0_45及其包含的JavaFX包。我正在使用Maven构建.exe,除了我不能包含我的图标外,它都运行得很好。 下面是我的pom.xml: 使图标出现在标题栏中的是javapackager部署步骤的参数。这一行告诉inno安装程序使用

  • 我运行了一个线程来更新应用程序的打开时间。效果很好。我扩大了服务级别。从这个任务开始的时间会按平台更新我的GUI文本字段。朗奈特 我想运行第二个线程来更新GUI。我不能跑同一条线。两个独立的线程可以在GUI上更新吗?互联网上的大部分信息都集中在一个主题上。谢谢你的建议

  • 我用 1 个类的不同数据填充我的表视图没有问题。但是它对多个类的我不起作用。知道如何解决这个问题吗?我已经在stackoverflow上查看了类似的问题。但他们都帮不了我。如果您对“回调”类有任何建议,请为我提供完整的导入,因为那里有几个回调类。 进一步的问题:如何在表格单元格的哈希集中显示实例的某个属性。所以我在我的 TaskControl 类中有一个 HashSet。在该HashSet中,有类

  • 问题内容: 目前,我的主包中只有一个文件,名为。由于代码不可重用,如何将内容拆分为多个文件而不创建单独的程序包。 我想要这样的目录结构: 然后在 但是给我: 问题答案: 原始答案 上面的代码实际上有效。问题是我需要跑步 代替

  • 问题内容: 我写了一个扩展JPanel的类。是否可以在NetBeans GUI Builder中使用它,并使它在所有自动代码生成中都可以生存? 我在GUI生成器中使用了自定义代码选项将对象实例化为新类,但似乎无法从JPanel更改声明,因此仅调用已覆盖的方法,而不能调用new JPanel中不存在的那些。 问题答案: 只需将类从项目树拖到GUI设计器中的表单上即可。