FXML与SceneBuilder开发中TableView控件的使用

来源:互联网 发布:诚哥战斗过的天台淘宝 编辑:程序博客网 时间:2024/06/09 06:56

本人最近正在使用javaFX开发桌面应用程序,使用FXML与SceneBuilder进行界面开发,在经过多方查找后,终于明白了TableView绑定数据的方法!


1、添加TableView控件

(1)在 SceneBuilder 中为 fxml 文件添加一个 TableView 控件。
(2)为该控件添加一个 fx:id 。
(3)在后台控制类中,添加一个变量。注:该变量需要一个泛型(表格数据的实体类)。

@FXMLprivate TableView<T> table;


2、添加TableColumn控件

(1)TableColumn 是 TableView 的“列”,需要添加在 TableView 控件当中。
(2)为该 TableColumn 控件添加一个 fx:id.
(3)在后台控制类中,添加一个变量。注:该变量需要两个泛型。


@FXMLprivate TableColumn<T,T> column;

3、初始化表格数据

(1)TableView 需要一个 ObservableList<T> 集合作为数据,该集合的泛型与 TableView 的泛型需要一致。
(2)配置 TableView 的所有 TableColumn 列。
(3)将数据集合添加到 TableView 中。
(4)实体类:实体类中的变量不能直接使用包装类,而需要javaFX提供的property类,具体如下:
  注:在配置 TableColumn 的时候,除了 String 类型外,其他类型(Integer,Double...)等需要添加 .asObject() 方法,具体如下:

例子:添加一个泛型为Person类的TableView

@FXMLprivate Table<Person> table;@FXMLprivate TableColumn<Person, Integer> ageCol;@FXMLprivate TableColumn<Person, String> nameCol;//(1)创建并初始化数据private final ObservableList<Person> cellData = FXCollections.observableArrayList();cellData.add(new Person(20,"Jack"));cellData.add(new Person(18,"Jerry"));cellData.add(new Person(21,"Mike"));//(2)配置 TableColumn 列ageCol.setCellValueFactory(cellData -> cellData.getValue().getAge().asObject());nameCol.setCellValueFactory(cellData -> cellData.getValue().getName());//(3)为 TableView 添加数据table.setItems(cellData);//(4)Person 实体类public class Person {private IntegerProperty age;private StringProperty name;public Person(Integer age, String name) {super();this.age = new SimpleIntegerProperty(age);this.name = new SimpleStringProperty(name);}public IntegerProperty getAge() {return age;}public void setAge(Integer age) {this.age = new SimpleIntegerProperty(age);}public StringProperty getName() {return name;}public void setName(String name) {this.name = new SimpleStringProperty(name);}}

 
原创粉丝点击