在JavaFX中访问场景中的窗格



我在这里发现了一些类似的问题,但似乎没有一个能解决我的问题。

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

目标是:

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

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

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

我在这里找到了如何获得场景中的所有节点,但这并没有让我走得更远。

如果你有经验,请给我一个建议,谢谢!

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

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);
    }
    // ...
}

最新更新