在 JavaFX 中访问场景内的窗格?
Accessing the panes inside a scene in JavaFX?
我在这里发现了一些类似的问题,但其中 none 似乎是我问题的解决方案。
如何访问场景结构中的不同窗格?
目标是:
我在场景中有一个拆分窗格,它被放在一个边框窗格上。在拆分窗格的左锚窗格中,我想要一个手风琴。右边应该根据手风琴选择的菜单点显示一个场景。
因此,如果可以将场景设置到拆分窗格的右侧,那就太好了,因为这样我就可以更改这个场景。改变整个场景不是一个很好的解决方案,因为手风琴不会在原来的地方打开,而且应用程序消耗了太多的 fxml 文件。
是否可以只更改拆分窗格的右侧,还是我的方法完全错误?
我在这里找到了如何获取场景中的所有节点,但它并没有给我带来进一步的帮助。
有经验的请多多指教,谢谢!
假设拆分窗格中只有两个节点,您可以将第二个(右侧)替换为
splitPane.getItems().set(1, newNode);
(更新)
如果您的 SplitPane
是在 FXML 文件中定义的,您将需要在控制器中执行此操作。要访问拆分窗格,只需给它一个 fx:id
属性(在 SceneBuilder 中,这是在右侧面板的 "code" 部分)并使用 @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);
}
// ...
}
我在这里发现了一些类似的问题,但其中 none 似乎是我问题的解决方案。
如何访问场景结构中的不同窗格?
目标是:
我在场景中有一个拆分窗格,它被放在一个边框窗格上。在拆分窗格的左锚窗格中,我想要一个手风琴。右边应该根据手风琴选择的菜单点显示一个场景。
因此,如果可以将场景设置到拆分窗格的右侧,那就太好了,因为这样我就可以更改这个场景。改变整个场景不是一个很好的解决方案,因为手风琴不会在原来的地方打开,而且应用程序消耗了太多的 fxml 文件。
是否可以只更改拆分窗格的右侧,还是我的方法完全错误?
我在这里找到了如何获取场景中的所有节点,但它并没有给我带来进一步的帮助。
有经验的请多多指教,谢谢!
假设拆分窗格中只有两个节点,您可以将第二个(右侧)替换为
splitPane.getItems().set(1, newNode);
(更新)
如果您的 SplitPane
是在 FXML 文件中定义的,您将需要在控制器中执行此操作。要访问拆分窗格,只需给它一个 fx:id
属性(在 SceneBuilder 中,这是在右侧面板的 "code" 部分)并使用 @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);
}
// ...
}