在运行的JavaFX应用程序中,使用其自己的单独控制器类打开一个新窗口

凯特

我正在将SceneBuilder与Netbeans的JavaFX库结合使用。我使用Scenebuilder为控制器类创建fxml和netbeans。目标是构建要部署的相当复杂的应用程序。

我可以启动JavaFX应用程序并连接好控制器类。但是,当我尝试打开新窗口时,似乎无法将控制器类绑定到新窗口。为了简单起见,由于后端复杂,我想为新窗口提供一个单独的控制器类。

TL; DR-尝试使用控制器类在JavaFX应用程序上打开新窗口。控制器类未绑定。

下面的代码示例

模型类-用于启动应用程序的包装器

public class Model extends Application{
    public static void main(String[] args){
         Application.launch(Model.class, args);
    }
    @Override
    public void start(Stage stage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
        stage.setScene(new Scene(root));
        stage.show();
    }
}

Sample.fxml-主应用程序的fxml文件

Sample.java -扩展了Initializable,是Sample.fxml的控制器类。下面是代码片段,我尝试在其中打开名为“ ServerConfigChooser”的新窗口

try{
    Parent root = FXMLLoader.load(getClass().getResource("ServerConfigChooser.fxml"));
    FXMLLoader loader = new FXMLLoader(getClass().getResource("ServerConfigChooser.fxml"));
    ServerConfigChooser controller = new ServerConfigChooser();

    loader.setController(controller);
    loader.setRoot(root);

    Stage stage = new Stage();
    stage.setScene(new Scene(root));
    stage.show();
} catch (IOException ex)

ServerConfigChooser.java-实现可初始化

这是我遇到的问题。我不能简单地声明与.fxml文件中的变量具有相同fxid的变量。调用该类时不会触发initialize()方法。

ServerConfigChooser类中构造函数的原因是我无法自动触发initialize()方法。我在构造函数中手动触发。

欢迎任何解决方案!

托马斯

不要像这样两次加载FXML。您可以多次加载同一.fxml文档(多个场景图/控制器),但是如果您要一起加载场景图并初始化控制器,则只需调用fxml加载器一次。

这是一个例子

    FXMLLoader loader = new FXMLLoader(getClass().getResource("ServerConfigChooser.fxml"));
    ServerConfigChooser controller = new ServerConfigChooser();
    loader.setController(controller);
    loader.setRoot(controller);
    Parent root;
    try {
        root = (Parent) loader.load();
        Scene scene = new Scene(root, 320, 200);
        Stage stage = new Stage();
        stage.setScene(scene);
        stage.show();
    } catch (IOException ex) {
        Logger.getLogger(ServerConfigChooser.class.getName()).log(Level.SEVERE, null, ex);
    }

注意

  • 您的控制器应扩展.fxml文档的根节点的节点类型
  • 您的.fxml文档应使用fxroot构造,请参阅此文档(您可以在场景生成器中设置此文档
  • 您应该从fxml根元素中删除控制器。它将与使用FXMLLoader类的这种方式冲突

例如控制器类

public class ServerConfigChooser extends AnchorPane implements Initializable {
   ...
}

和.fxml

<fx:root type="javafx.scene.layout.AnchorPane" id="AnchorPane" prefHeight="200.0" prefWidth="320.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在XCode 5中,在应用程序启动结束时,应用程序窗口应具有一个根视图控制器。

来自分类Dev

在运行的JavaFX应用程序中,使用其自己的单独控制器类打开一个新窗口

来自分类Dev

通过单击JSF中的<p:commandButton>打开一个新窗口

来自分类Dev

如何通过单击按钮在鞋红宝石中打开一个新窗口

来自分类Dev

使用jquery / C#Razor在Same session中打开一个新窗口

来自分类Dev

Xcode重新打开一个应用程序

来自分类Dev

在Meanjs应用程序控制器中承诺“那么”不是一个函数

来自分类Dev

使用其他应用程序打开一个应用程序

来自分类Dev

在Rails中单击“提交”打开一个新窗口。

来自分类Dev

使用javascript打开一个新窗口(谷歌地图),删除以前的事件处理程序

来自分类Dev

卸载Chrome扩展程序后打开一个新窗口

来自分类Dev

如何在C#应用程序中使用xbox一个控制器

来自分类Dev

在最初打开的工作区中打开一个应用程序

来自分类Dev

运行时错误通过选择表内容打开一个新窗口

来自分类Dev

在最初打开的工作区中打开一个应用程序

来自分类Dev

按键在Windows 7资源管理器中打开一个新窗口?

来自分类Dev

如果OSX中已经在运行它,如何从Dock中打开一个新窗口

来自分类Dev

应用程序窗口在xcode中的应用程序启动警告结束时应具有一个根视图控制器

来自分类Dev

尝试运行Javafx应用程序时,它将打开一个空框

来自分类Dev

GUI,JComboBox并打开一个新窗口

来自分类Dev

我想在Android的应用程序窗口中打开一个链接

来自分类Dev

关闭实际的窗口并从ViewModel中打开一个新窗口

来自分类Dev

如何在控制台应用程序中打开一个窗口?

来自分类Dev

让按钮打开一个新窗口

来自分类Dev

使用菜单栏在 OS X 应用程序中创建一个新窗口

来自分类Dev

如何从另一个类更新窗口应用程序中的进度条?

来自分类Dev

应用程序窗口在监视器中打开一半

来自分类Dev

打开一个新窗口然后提交表单

来自分类Dev

打开一个新窗口并返回

Related 相关文章

  1. 1

    在XCode 5中,在应用程序启动结束时,应用程序窗口应具有一个根视图控制器。

  2. 2

    在运行的JavaFX应用程序中,使用其自己的单独控制器类打开一个新窗口

  3. 3

    通过单击JSF中的<p:commandButton>打开一个新窗口

  4. 4

    如何通过单击按钮在鞋红宝石中打开一个新窗口

  5. 5

    使用jquery / C#Razor在Same session中打开一个新窗口

  6. 6

    Xcode重新打开一个应用程序

  7. 7

    在Meanjs应用程序控制器中承诺“那么”不是一个函数

  8. 8

    使用其他应用程序打开一个应用程序

  9. 9

    在Rails中单击“提交”打开一个新窗口。

  10. 10

    使用javascript打开一个新窗口(谷歌地图),删除以前的事件处理程序

  11. 11

    卸载Chrome扩展程序后打开一个新窗口

  12. 12

    如何在C#应用程序中使用xbox一个控制器

  13. 13

    在最初打开的工作区中打开一个应用程序

  14. 14

    运行时错误通过选择表内容打开一个新窗口

  15. 15

    在最初打开的工作区中打开一个应用程序

  16. 16

    按键在Windows 7资源管理器中打开一个新窗口?

  17. 17

    如果OSX中已经在运行它,如何从Dock中打开一个新窗口

  18. 18

    应用程序窗口在xcode中的应用程序启动警告结束时应具有一个根视图控制器

  19. 19

    尝试运行Javafx应用程序时,它将打开一个空框

  20. 20

    GUI,JComboBox并打开一个新窗口

  21. 21

    我想在Android的应用程序窗口中打开一个链接

  22. 22

    关闭实际的窗口并从ViewModel中打开一个新窗口

  23. 23

    如何在控制台应用程序中打开一个窗口?

  24. 24

    让按钮打开一个新窗口

  25. 25

    使用菜单栏在 OS X 应用程序中创建一个新窗口

  26. 26

    如何从另一个类更新窗口应用程序中的进度条?

  27. 27

    应用程序窗口在监视器中打开一半

  28. 28

    打开一个新窗口然后提交表单

  29. 29

    打开一个新窗口并返回

热门标签

归档