如何从单元工厂获取当前单元格值?

时间:2015-08-22 10:00:23

标签: tableview javafx-8 tablecolumn

TableView有5 TableColumn。其中一列代表地图上的文化颜色。

    colorColumn.setCellValueFactory(cellData -> {
        return new SimpleObjectProperty<Culture>(cellData.getValue());
        });
    colorColumn
            .setCellFactory(value -> {
                CellShape<Rectangle, Culture> elem = new CellShape<Rectangle, Culture>(
                        new Rectangle(50.0, 30.0, COLOR_OF_APPROPRIATE_CULTURE));
                elem.setAlignment(Pos.CENTER);
                return elem;
            });   

此处为COLOR_OF_APPROPRIATE_CULTURE - 它是Culture对象中设置的颜色。

  public class Culture
{
    private Color color;
    //setter and getter
}   

那么,如何在CellFactory中获取此颜色字段?

1 个答案:

答案 0 :(得分:6)

我认为,CellShapeTableCell子类,因为setCellFactory()的回调必须返回TableCell或后代。如果是这样,您可以通过getTableRow()方法获取行数据对象TableCell。 它看起来像是:

myColumn.setCellFactory(new Callback<TableColumn<Data, Fieldtype>, TableCell<Data, Fieldtype>>() {

  @Override
  public TableCell<Data, Fieldtype> call(TableColumn<Data Fieldtype> param) {
    return new TableCell<Data, Fieldtype>(){

      @Override
      protected void updateItem(Fieldtype item, boolean empty) {
        super.updateItem(item, empty); 

        Object rowDataItem = this.getTableRow().getItem();
        // Do what with the row data what you like ...

        // ...
      }
    };
  }
});