如何从电池工厂获取当前电池值?
How to get current cell value from cell factory?
我有 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
中得到这个色域呢?
我假设,CellShape
是一个 TableCell
子类,因为 setCellFactory()
的回调必须 return 一个 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 ...
// ...
}
};
}
});
我有 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
中得到这个色域呢?
我假设,CellShape
是一个 TableCell
子类,因为 setCellFactory()
的回调必须 return 一个 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 ...
// ...
}
};
}
});