0

我在这里发现了一些类似的问题,但它们似乎都不能解决我的问题。

如何访问场景结构中的不同窗格?

目标是:

我在场景中有一个拆分窗格,它放在边框窗格上。在拆分窗格的左侧锚窗格中,我想要一个手风琴。右侧应根据所选的手风琴菜单点显示一个场景。

因此,如果可以在拆分窗格的右侧设置一个场景,那就太好了,因为我可以改变这个场景。改变整个场景不是一个很好的解决方案,导致手风琴不会在原来的地方打开,并且应用程序消耗了太多的 fxml 文件。

是否可以只更改拆分窗格的右侧,还是我的方法完全错误?

我在这里找到了如何在一个场景中获取所有节点,但它并没有让我更进一步。

有相关经验的请给我建议,谢谢!

4

1 回答 1

1

假设您在拆分窗格中只有两个节点,您可以将第二个(右)替换为

splitPane.getItems().set(1, newNode);

(更新)

如果您SplitPane在 FXML 文件中定义,则需要在控制器中执行此操作。要访问拆分窗格,只需给它一个fx:id属性(在 SceneBuilder 中,它位于右侧面板的“代码”部分中)并使用@FXML注释将其注入控制器:

FXML 文件:

<!-- imports omitted -->
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.MyController">
   <SplitPane fx:id="mainSplitPane">
      <!-- ... -->
   </SplitPane>
</AnchorPane>

MyController.java:

package com.example ;

// imports omitted...

public class MyController {

    @FXML
    private SplitPane mainSplitPane ;

    @FXML
    private void handleButtonPress() {
        Node newNode = ... ;
        mainSplitPane.getItems().set(1, newNode);
    }

    // ...
}
于 2015-02-22T21:44:03.517 回答