我在这里发现了一些类似的问题,但似乎没有一个问题可以解决我的问题。
如何访问场景结构中的不同窗格?
目标是:
我在场景中有一个分割窗格,它放在边框窗格上。在拆分窗格的左侧锚定窗格中,我想要一个手风琴。右侧应根据手风琴选择的菜单点显示场景。
因此,如果可以将场景设置到分割窗格的右侧,那将是很好的,因为我可以更改此场景。改变整个场景不是一个很好的解决方案,因为手风琴不会在那里打开,而且应用程序会消耗太多的fxml文件。
是否可以仅更改拆分窗格的右侧,或者我的方法完全错误?
我在这里找到了如何在一个场景中获取所有节点,但它并没有让我更进一步。
如果您有相关经验,请给我一个建议,谢谢!
答案 0 :(得分:1)
假设您在拆分窗格中只有两个节点,则可以用
替换第二个(右侧)节点splitPane.getItems().set(1, newNode);
(更新)
如果在FXML文件中定义了SplitPane
,则需要在控制器中执行此操作。要访问拆分窗格,只需为其提供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);
}
// ...
}