JavaFX表在setEditStart上设置表格单元格背景

时间:2014-04-09 12:14:48

标签: colors javafx-2 cell edit

我在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");
   }});

1 个答案:

答案 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());
                }
            }
        };
    }
}