我在JavaFX中有一个包含可编辑单元格(表格)的表格。我想编辑表格中单元格的值。现在FX中的编辑行为有点不寻常。您必须按Enter键才能提交已编辑的值。改变行或单元是不够的。所以我的想法是在我开始编辑时将单元格背景绘制成黄色,并在用户按下Enter键时删除黄色,以提醒用户按Enter键。但是我在启动编辑方法中获取单元格时遇到了一些问题。如何更改颜色?
欢迎任何提示!
这是我的代码
TableColumn nameCol = new TableColumn("Name");
nameCol.setCellFactory(TextFieldTableCell.forTableColumn());
nameCol.setOnEditStart(new EventHandler<CellEditEvent<Zone, String>>() {
@Override
public void handle(CellEditEvent<Zone, String> cell)
{
if(cell.getRowValue() != null)
//how to get the cell and then ->.setStyle("-fx-background-color:yellow");
}});
答案 0 :(得分:0)
不要依赖setOnEditStart
API,而是使用表格的RowFactory
。
/**
*
* @author ggrec
*
*/
private class FXTableRowFactory implements Callback<TableView<FXTableRow>, TableRow<FXTableRow>>
{
@Override
public TableRow<FXTableRow> call(final TableView<FXTableRow> arg0)
{
return new TableRow<FXTableRow>() {
@Override protected void updateItem(final FXTableRow line, final boolean empty)
{
super.updateItem(line, empty);
if (line == null)
return;
if (isEditing())
{
this.setStyle(line.getStyleWhenEditing());
}
}
};
}
}