概览
JavaFX中实现一个table需要实现两个类:TableView
, TableColumn
此外,还要将放入表格中的数据(每行是一个对象)用一个自定义的类表示。在JavaFX中,这个自定义类可以使用property属性绑定
为了将TableColumn的对象和数据对象进行关联,需要使用 Cell Value Factory 和 Cell Factory
setCellFactory的意图是在创建这列的时候要做的事情,你可以改变TableCell的任何内容,包括UI和Value,而setCellValueFactory呢,它的重点是关联属性,从你传递给它的Model中通过对应属性的getter来获取值。在setCellFactory中的TableCell有个回调,叫
updateItem
,它可以获取到你设置到此Cell的值,这个值是跟setCellValueFactory所关联的属性有关。
固定属性
1 | public class Data { |
1 | TableView table = new TableView(); |
动态属性
在写 CSV editor 时,显然table的行列数都是不确定的,因此不能按照上述步骤。TableColumn可以根据需要创建,但是绑定column和数据需要进行改动
1 | column.setCellValueFactory(param -> param.getValue().get(ii)); |
这里的参数不能继续使用PropertyValueFactory的对象,而应该用index去获取ObservableList的值
应用可以参考 这段代码 的showData()函数
参考资料
JavaFx TableView疑难详解 | cmlanche