最近我正在研究JavaFx,我尝试制作一些复杂的设计布局。设计理念是,当我点击按钮 AnchorPane 动态加载 ScrollPane
这是我的代码
FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/rahadur/view/FXMLDocument.fxml"));
AnchorPane pane = (AnchorPane)loader.load();
/* HERE IS THE PROBLEM FAILD TO CONVERT SCROLLPANE */
ScrollPane scroll_pane = (ScrollPane) btn_add_click.getParent().getParent();
Node node = scroll_pane.getContent();
node = null;
scroll_pane.setContent(pane);
问题在于,当代码尝试从父类隐藏 ScrollPane 时,它会显示 错误
java.lang.ClassCastException: com.sun.javafx.scene.control.skin.ScrollPaneSkin$4 cannot be cast to javafx.scene.control.ScrollPane
我搜索了很多次但没有找到解决这个问题的方法。希望你的家伙给我一个击球手的解决方案
感谢您查看此问题...
答案 0 :(得分:2)
使用getChildren()
和getParent()
方法的组合来遍历场景图不是那么可靠和恰当。将fx:id
提供给一些最常用的节点,然后通过lookup()
获取它们:
在fxml文件中
<ScrollPane fx:id="scrollpane" ... >
在后端课程中
ScrollPane scroll_pane = (ScrollPane) scene.lookup("#scrollpane");
scroll_pane.setContent(anchorpane);