【问题标题】:How to get Editable Tableview Cell value after edit complete in JavaFX FXML在 JavaFX FXML 中编辑完成后如何获取可编辑的 Tableview 单元格值
【发布时间】:2016-01-10 04:40:02
【问题描述】:

我有一个带有可编辑列 quantityColumn 的 TableView selectedProductsTable。 我想在用户编辑列之后取值。方法被调用没有问题,但我不知道如何获取值。

@FXML
private TableView selectedProductsTable;
@FXML
private TableColumn quantityColumn;
.......

@Override
public void initialize(URL url, ResourceBundle rb) {
   selectedProductDataList = FXCollections.observableArrayList();
   quantityColumn.setCellFactory(TextFieldTableCell.forTableColumn());
}

@FXML
public void onEditCommitSelectedProductTable( ){

    // this method fires when user press enter after finish editing "Quantity" column value.

    // how to get Edited value


}

我正在将值添加到在按钮单击中调用的方法中的表中。 image of GUI

【问题讨论】:

  • 你能显示相关的FXML吗? onEditCancelSelectedProductTable 与什么事件相关联?
  • 方法名应该是 'onEditCommitSelectedProductTable( )',它会在 'Quantity' 列的 'on Edit Commit' 事件上触发。你还需要 FXML 代码吗?
  • 添加数量列的FXML声明即可

标签: javafx javafx-2 javafx-8 fxml


【解决方案1】:

onEditCommit 处理程序将CellEditEvent 对象作为其参数,其中包含有关事件的信息,包括新值。所以你可以做

@FXML
public void onEditCommitSelectedProductTable(CellEditEvent<?,?> event){
    Object newValue = event.getNewValue();
    // other data that might be helpful:
    TablePosition<?,?> position = event.getTablePosition();
    int row = position.getRow();
    // etc ...
}

【讨论】:

  • 谢谢...另一件事,如果用户忘记按 Enter 会发生异常。有没有办法处理它。如果用户忘记按 Enter,有什么方法可以退出可编辑模式。
  • 默认情况下,如果用户将焦点移动到其他地方而不按回车,它应该取消编辑。哪里抛出了异常?
猜你喜欢
  • 1970-01-01
  • 2013-10-20
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
相关资源
最近更新 更多