这是问题,
我有一个JavaFX应用程序,主要显示元素是BorderPane。
我使用BorderPane的顶部显示按钮,它们将像“导航”按钮一样显示,中心显示当前所选的应用程序部分。
此链接中描述的某些解决方案应该可以解决问题:
https://community.oracle.com/thread/2598756
我对代码感到很困惑,我唯一真正理解的是它在列表上设置了某种changeListener,应该保存“selectedView”。
一旦列表发生变化,它就会在应用程序的主要部分触发一个函数,这个函数应该设置中心元素显示,并加载一个新的fxml文件。
所以,我试图实现完全相同的例子,只有2个级别(主要 - >中心)并且什么都不起作用。
以下是我创建的当前文件:
ScreenSwitcher.java
// Main class, loads the "main" fxml component
Main.fxml
// Main fxml component, BorderPane (buttons + center -empty-)
MainController.java
// Main controller, the magic should happen here
PaneOne.fxml & PaneTwo.fxml
// Children fxml, should only be displayed in the main->center element
PanelOneController.java & PaneTwoController.java
// Corresponding controllers
ViewControllerInterface.java
// An interface, as described in the given link explanation
https://github.com/Julo0sS/ScreenSwitcher
首先,在app开始时,我收到此警告:
WARNING: Exception while evaluating select-binding [selectedView]
然后,当点击按钮切换主显示器时,没有任何反应......我确实让控制台显示“CALL TO GOPANEWO”(或GOPANEONE),所以它进入功能代码,但似乎是“ changeListener“不起作用......
也许我在代码中错了,也许有更好/更快的方式来实现我正在尝试的东西,但实际上,我只是坚持这个......
感谢您阅读/帮助
更新一个
现在可以让应用程序的一部分工作,
更改currentView“事件”发送,并且正常工作,由子视图本身发送(通过单击PaneOne中的按钮或PaneTwo),但在主视图中触发时不起作用(在顶部borderpane的一部分,应该是一个导航栏)
Git repo更新了最新修改......