Javafx - 如何更改upTableColumn的行为

时间:2014-10-11 14:30:03

标签: java javafx

我有一个包含2列的TableView(TableColumn)。

我将其中一列(TableColumn)委托给“on edit commit”(通过场景构建器)。

当我将一个新值写入其中一个单元格列并按下ENTER时,我将进入委派函数。

但是,如果我正在写一个值并在其他单元格上单击鼠标,则不保存该值(并且未调用委托函数)(因为我没有按ENTER键)。

有没有办法改变这种行为? 有没有办法通过场景构建器或代码来实现?

谢谢

1 个答案:

答案 0 :(得分:0)

默认的TextField行为要求用户按Enter键提交编辑。这可以通过扩展TableCell类来提交焦点更改的编辑来改变,就像在this TableView教程中一样。准确地说,看一下EditingCell类的实现及其在这个例子中的用法。

基本上,所需要的只是表格单元格的文本字段设置焦点更改侦听器,它将调用commitEdit(),如下例所示:

textField.focusedProperty().addListener(new ChangeListener<Boolean>(){
  @Override
  public void changed(ObservableValue<? extends Boolean> arg0, 
                      Boolean arg1, Boolean arg2) {
    if (!arg2) {
      commitEdit(value);
    }
  }
});

上面提到的示例显示了如何在Java代码中为表列设置新的表格单元格类型,但也可以在FXML中进行设置。