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

在同一阶段,不同的Fxml-Javafx

翟黎明
2023-03-14

我是JavaFX新手。我有一个加载了垂直拆分窗格的窗口。在拆分页面的左侧,我有几个按钮。每次单击按钮时,我都需要在拆分窗格的右侧加载单独的fxml。所以在这里我粘贴屏幕截图以保持清晰。

从现在开始,当搜索按钮被点击时,我在不同的阶段,不同的场景中打开。现在我需要在baselayout窗口的右侧加载Searcher。下面是一些加载baseLayout的代码。

@Override
    public void start(Stage primaryStage) throws Exception {
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("Base Layout");
        BaseController.setMlTool(this);
        FXMLLoader loader = new FXMLLoader(MLTool.class.getResource("view/Base.fxml"));
        baseLayout = (AnchorPane) loader.load();
        Scene scene = new Scene(baseLayout);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

下面是一些点击按钮时加载搜索器的代码。

@FXML
    private void initialize(){
        System.out.println("Testing");
    }

    @FXML
    private void handleSearchButton(){
        System.out.println("Handle Button Called");

        Stage search = new Stage();
        FXMLLoader loader = new FXMLLoader(MLTool.class.getResource("view/Searcher.fxml"));
        search.setTitle("Searcher");
        try {
            AnchorPane searcherPage = (AnchorPane) loader.load();
            Scene scene = new Scene(searcherPage);
            search.setScene(scene);
            search.show();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

下面是如何在BaseLayout的拆分窗格右侧加载Searcher。希望我的问题清楚。谢谢你的帮助。

共有3个答案

柏麒
2023-03-14

在您的处理程序方法中尝试:

首先申报锚泊烷。在fxml右窗格中,放置带有AnchorController名称的anchorpane。

 @FXML
 private AnchorPane anchCmdController;

然后更新handleSearchButton事件。

@FXML
private void handleSearchButton() throws IOException {
System.out.println("Handle Button Called");

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("view/Searcher.fxml"));
Pane cmdPane = (Pane) fxmlLoader.load();
try {
/* NEED TO DECLARE ANCHOR PANE" */
anchCmdController.getChildren().clear();
anchCmdController.getChildren().add(cmdPane);
} catch (Exception e) {
e.printStackTrace();
}
}
封烈
2023-03-14

试着听一下按钮的滴答声,一旦按钮被点击,就使用“FXMLLoader.load”来加载基于根元素的内容,将其转换为面板并分配给右侧的内容。

范兴文
2023-03-14

您可以在右侧获取窗格,然后将 fxml 作为该窗格的子节点加载。舞台始终相同,您可以在窗格中加载fxml。例如:MainWindow.fxml 是 perent window。您可以在分阶段加载。

Parent root = FXMLLoader.load(getClass().getResource("MainWindow.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();

现在在MainWindow.fxml中,你有一个分割窗格。将anchorPan放在按钮单击时要加载fxml的右侧。然后在anchorpane中添加fxml作为子级。

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(fxml));
Pane cmdPane = (Pane) fxmlLoader.load();
try {
anchCmdController.getChildren().clear();
anchCmdController.getChildren().add(cmdPane);
fadeIn.playFromStart();
} catch (Exception e) {
e.printStackTrace();
}
 类似资料:
  • 我试图在jenkins管道中的不同节点上运行不同的阶段,比如第一阶段是签出,第二阶段是构建,第三阶段是单元测试。例如: 如果我尝试这样做,我的问题是如果我在Linux1节点中签出代码,那么当签出的代码在node1中时,为什么其他阶段可以在不同的节点中运行。 代码将如何分布,如果我的理解不正确,我如何实现并行,并确保每个阶段都可以并行并减少时间。 如果可能,请推荐任何用于编写Jenkins管道的gr

  • 在 OpenResty 的体系中,可以通过共享内存的方式完成不同工作进程的数据共享,可以通过 Lua 模块方式完成单个进程内不同请求的数据共享。如何完成单个请求内不同阶段的数据共享呢?最典型的例子,估计就是在 log 阶段记录一些请求的特殊变量。 ngx.ctx 表就是为了解决这类问题而设计的。参考下面例子: location /test { rewrite_by_lua_block {

  • 我有一个多分支管道架构的以下Jenkinsfile 我试图在Ubuntu和Red Hat节点上并行运行“构建”阶段,而仅在Ubuntu节点上运行“测试”阶段。 任何人都可以帮助我指定如何选择在哪些节点上运行哪些阶段。我在网上找到的解决方案很少,但他们建议重写构建阶段两次:一次用于Red Hat节点,另一次用于Ubuntu节点。难道没有办法在没有代码重复的情况下做到这一点吗? 非常感谢

  • 我希望能够更改我在每个API网关方法中定义的endpoint,以便名为“Dev”的登台环境指向我的内部Dev API,而Prod阶段当然会路由到我的生产API。 现在,我必须手动更改每个方法,然后部署到prod stag,但现在,要进行任何测试,我必须在开发阶段再次将它们全部更改回来。 我有一个名为User的资源和一个映射到endpoint(HTTP代理)的GET方法->HTTP://dev.my

  • 问题内容: 我有2个fxml文件: 布局(标题,菜单栏和内容) Anchorpane(应该放在另一个fxml文件的内容中) 我想知道如何从“主”场景将第二个文件加载到内容空间内。在javaFX中工作是一件好事,还是加载一个新场景更好? 我正在尝试做这样的事情,但是不起作用: 谢谢您的帮助。 问题答案: 为什么您的代码不起作用 加载程序会创建一个新的AnchorPane,但是您绝不会将新窗格添加到场