我最近正在编写一个javafx应用程序,在其中一个部分中,客户端必须等待服务器获取人员列表,并且在获取列表后,它必须在列表视图中使用,该列表视图将被添加到家长。该父级是和fxml文件,加载后我想知道是否可以将包含listview的vbox添加到父级。如果有人能帮忙,我将不胜感激......
答案 0 :(得分:1)
根据您提出的问题,您不熟悉控制器的概念或FXMLLoader
执行的相关FXML注射。 This answer by James_D介绍了JavaFX生命周期的基础知识,但它首先介绍了加载FXML文件时所涉及的过程的基础知识。如果要修改通过FXML加载的场景图,则需要使用带有相应FXML
注释字段的控制器类。例如,假设您的父母是BorderPane
。在您的FXML文件中,您有:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane fx:id="parent" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/10.0.1"
fx:controller="some.package.YourController">
<top>
<!-- maybe have something like a MenuBar here -->
</top>
<bottom>
<!-- maybe have a some type of status bar here -->
</bottom>
</BorderPane>
注意fx:controller
属性;它是要实例化并用作控制器的类的类名。另请注意fx:id
属性。在您的控制器类中,您将拥有:
package some.package;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXML;
public class YourController {
@FXML
private BorderPane parent; // field name matches the fx:id attribute
@FXML
private void initialize() {
// do any initializing if needed (if not, get rid of this method)
// you can access and modify any FXML injected field from this method
}
}
然后您可以通过控制器实例使用父级。您还可以在控制器中创建和链接事件处理程序方法,并根据用户操作执行某些操作。但是,重要的是要注意,如何更改控制器中UI的状态取决于您访问模型类的方式。您需要将模型提供给控制器,并且可能在多个控制器之间共享它。关于如何执行此操作,Stack Overflow上有相当多的问题/答案。
以下是另一种可以帮助您的资源:Introduction to FXML。