javafx之TableView的TableColumn

TableColumn列 

列与Bean之间建立联系: 
setCellValueFactory();
通过cell值工厂建立与Bean的联系。它这里并不需要知道你是传了什么Bean,它只需要通过“字段名”反射去Bean里面获得值,所以Bean属性定义的名字不需要与它相同,只需要有字段名Property() 方法。 

setCellValueFactory(new PropertyValueFactory<Person, String>("字段名"));

 

[java] view plain copy
 
  1. TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");  
  2. firstNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("firstName"));  


第二种设置方式

setCellValueFactory(new CallBack<T,S>());

[java] view plain copy
 
  1. setCellValueFactory(new CallBack<TableColumn.CellDataFeatures<Person, String>,ObservableValue<String>>()  
  2. @Override  
  3.             public ObservableValue<String> call(TableColumn.CellDataFeatures<Person, String> cellData) {  
  4.                  
  5.                 return new SimpleStringProperty(cellData.getValue().);  
  6.             }  
  7. );  

 


TableColumn设置sort的3个方法 

setSortNode(Node); // 默认是表头上的小图标三角形,可以改变 
setSortable(true); // 设置可排序 

setSortType(SortType);//设置升降序 SortType.DESCENDINGSortType.ASCENDING



table.getSelectionModel().getSelectedCells().get(0).getTableColumn() // 获取选中的TableColumn
column中包含多个column,则可以调用TableColumn的getColumns().setAll(TableColumn...)

 

TableColumn<Person, String> firstNameColumn = new TableColumn<Person, String>("First");  
firstNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));  
// firstNameColumn.setCellFactory(TextFieldCellFactory.<Person>forTableColumn());  
TableColumn<Person, String> lastNameColumn = new TableColumn<Person, String>("Last");  
lastNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));  
// lastNameColumn.setCellFactory(TextFieldCellFactory.<Person>forTableColumn());  
TableColumn<Person, String> nameColumn = new TableColumn<Person, String>("Name");  
nameColumn.getColumns().setAll(firstNameColumn, lastNameColumn);  


原文地址:https://www.cnblogs.com/maokun/p/6710833.html