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