Javafx 2 JavaFX2.2 TableView:如何在不单击鼠标的情况下编辑表格单元格?
我遇到了可编辑表格单元格的问题。我在我的项目中使用TableView,就像 根据它,我使用setCellFactory方法在TextFieldTableCell类的帮助下将表格单元格重新实现为文本字段。但是,我发现要达到单元格可以编辑的程度,步骤有点复杂:Javafx 2 JavaFX2.2 TableView:如何在不单击鼠标的情况下编辑表格单元格?,javafx-2,Javafx 2,我遇到了可编辑表格单元格的问题。我在我的项目中使用TableView,就像 根据它,我使用setCellFactory方法在TextFieldTableCell类的帮助下将表格单元格重新实现为文本字段。但是,我发现要达到单元格可以编辑的程度,步骤有点复杂: 使用方向键选择表格单元格 按“回车”键将单元格转换为文本字段,以便编辑 单击文本字段可编辑内容 问题是第3步,您必须使用鼠标单击才能在此表格单元格中输入数据 那么,有没有办法避免第三步呢?也就是说,当您只需按“回车”(第2步)时,文本字段允许
TextFieldTableCell
是一个TableCell
,它有一个节点(图形)TextField
,当单元格处于编辑模式时将呈现该节点。您需要手动聚焦到此文本字段,但使用TextFieldTableCell
无法访问该文本字段。但是,如果您更喜欢教程中描述的替代方法,那么您有机会集中精力。该教程中唯一更改的方法是:
@Override
public void startEdit() {
super.startEdit();
createTextField();
setText(null);
setGraphic(textField);
textField.selectAll();
// Set the focus
Platform.runLater(new Runnable() {
@Override
public void run() {
textField.requestFocus();
}
});
}
要在没有鼠标单击事件的情况下在TableView中开始编辑,请调用TreeView.edit(rowIndex,tableColumn) 例如:
//create tableview object
TableView<YourModel> tableView = new TableView<>();
//create column
TableColumn<YourModel, String> column = new TableColumn<>("Property Name");
//add column to tableview
tableView.getColumns().add(column);
//... your cell factory and the rest
//add an item
tableView.getItems().add(new YourModel());
//if you want to edit the selected item, get its index
int selectedIndex = tableView.getSelectionModel().getSelectedIndex();
//fire edit
tableView.edit(selectedIndex, column);
//创建tableview对象
TableView TableView=新建TableView();
//创建列
TableColumn=新的TableColumn(“属性名称”);
//将列添加到tableview
tableView.getColumns().add(column);
//... 你的细胞工厂和其他
//添加项目
tableView.getItems().add(新建YourModel());
//如果要编辑所选项目,请获取其索引
int-selectedIndex=tableView.getSelectionModel().getSelectedIndex();
//火编辑
tableView.edit(选择索引,列);