我有一个带有可编辑列的表格视图,该列名为“ monto”,在单击鼠标进行编辑时效果很好,但是当我按下“ enter”时,我需要启用编辑功能。
private TableView<Personal> myTable;
private TableColumn<Personal,Double> columnaMonto;
... //Code when user edit with the mouse
columnaMonto.setOnEditCommit(
new EventHandler<TableColumn.CellEditEvent<Personal, Double>>() {
@Override
public void handle(TableColumn.CellEditEvent<Personal, Double> event) {
int pos = event.getTablePosition().getRow();
((Personal)event.getTableView().getItems().get(
event.getTablePosition().getRow())
).setImporte(event.getNewValue());
myTable.requestFocus();
myTable.getSelectionModel().select(pos + 1);
myTable.getFocusModel();
}
}
);
这是我的尝试:
myTable.setOnKeyReleased(evt -> {
if (evt.getCode() == KeyCode.ENTER) {
System.out.println("Enter is OK!!");
TablePosition focusedCellPosition = myTable.getFocusModel().getFocusedCell();
System.out.println(focusedCellPosition.getRow());
myTable.requestFocus();
myTable.edit(focusedCellPosition.getRow(), columnaMonto);
}
});
问题是总是选择编辑(例如双击),只有在用户按Enter时我才需要这样做。 另一个问题是滚动条无法正常工作在同一位置。Example Img
谢谢,对不起,我很难用英语解释。
答案 0 :(得分:0)
myTable.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if( event.getCode() == KeyCode.ENTER) {
return;
}
// switch to edit mode on keypress, but only if we aren't already in edit mode
if( myTable.getEditingCell() == null) {
if( event.getCode().isLetterKey() || event.getCode().isDigitKey()) {
TablePosition focusedCellPosition = myTable.getFocusModel().getFocusedCell();
myTable.edit(focusedCellPosition.getRow(), focusedCellPosition.getTableColumn());
}
}
}
});
此代码在按字母键或数字键时可以正常工作。您的单元格将被编辑。对于输入键,您可以编写条件或逻辑。