Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX控件以及Scenebuilder_Java_Css_User Interface_Javafx - Fatal编程技术网

JavaFX控件以及Scenebuilder

JavaFX控件以及Scenebuilder,java,css,user-interface,javafx,Java,Css,User Interface,Javafx,所以,我正在做一个涉及JavaFX的小项目。我不熟悉JavaFX和创建gui。我开始使用Gluon的scenebuilder,并使用.css进行布局和添加一些外部样式。但是,我需要为我使用的一种锚链实现拖放功能。您无法通过scenebuilder实现这一点,因此我试图通过代码获取所有节点并对应用程序进行更改,但样式/更改不适用。这是因为它们不是我在scenebuilder中使用的对象的硬拷贝吗 我的代码: Parent root = FXMLLoader.load(getClas

所以,我正在做一个涉及JavaFX的小项目。我不熟悉JavaFX和创建gui。我开始使用Gluon的scenebuilder,并使用.css进行布局和添加一些外部样式。但是,我需要为我使用的一种锚链实现拖放功能。您无法通过scenebuilder实现这一点,因此我试图通过代码获取所有节点并对应用程序进行更改,但样式/更改不适用。这是因为它们不是我在scenebuilder中使用的对象的硬拷贝吗

我的代码:

        Parent root = FXMLLoader.load(getClass().getResource("fxml file");
        FXMLLoader loader = load(getClass().getResource("fxml file");
        BorderPane pane = loader.load();
        ArrayList<Node> nodeList = new ArrayList<Node>();

        //Get All nodes of BorderPane
        for(Node node: pane.getChildren()){
            nodeList.add(node);
        }

        //Get TabPane from nodeList
        TabPane tabPane = (TabPane) nodeList.get(0);

        ObservableList<Tab> tabList = tabPane.getTabs();
        //Declare List for Tab Pane's anchorpanes
        ArrayList<Node> anchorPaneList = new ArrayList<Node>();
        //Retrieve tabPane anchorPanes
        for(Tab tab: tabList){
            anchorPaneList.add(tab.getContent());
        }

        //Retrieve the First AnchorPane
        AnchorPane ap1 = (AnchorPane) anchorPaneList.get(0);

        ap1.getStyleClass().add("turnRed");

您应该使用a来执行此操作。另请参见(假设您实际在某个场景中的某个位置显示
窗格
,则您的代码应该可以工作;但是,这种在场景图中导航的方式并不可靠-您可能需要在每次更改布局时重写所有这些代码。)此外,问题中没有任何迹象表明您使用了包含
.turnRed
规则的CSS样式表。请创建一个和您的问题,包括它…而且,您似乎加载FXML两次。不清楚您的
加载(…)
方法是做什么的,但是您加载FXML一次并调用它
root
,显然再次加载并调用它
窗格
。这是有原因的吗?只是假设第二次加载将获得每个容器的所有子节点等。我最初是从父根节点开始的,但我无法通过这种方式获得子节点。但是第二次加载将获得一组全新的控件。因此,如果在UI中显示
root
,您将调用UI中未显示的控件的方法(设置样式等)。。。。
.turnRed {
 -fx-background-color: red;
}