JavaFx ScrollPaneSkin无法强制转换为ScrollPane

时间:2015-09-02 05:25:56

标签: javafx fxml classcastexception scrollpane

最近我正在研究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

我搜索了很多次但没有找到解决这个问题的方法。希望你的家伙给我一个击球手的解决方案

感谢您查看此问题...

1 个答案:

答案 0 :(得分:2)

使用getChildren()getParent()方法的组合来遍历场景图不是那么可靠和恰当。将fx:id提供给一些最常用的节点,然后通过lookup()获取它们:

在fxml文件中

<ScrollPane fx:id="scrollpane"  ... >

在后端课程中

ScrollPane scroll_pane = (ScrollPane) scene.lookup("#scrollpane");
scroll_pane.setContent(anchorpane);