JavaFX TableView 如何获取单元格的数据?
JavaFX TableView how to get cell's data?
我正在使用该方法获取整个对象。
tableView.getSelectionModel().getSelectedItem()
如何从单个单元格中获取数据?
我的意思是像获取 S20BJ9DZ300266 作为字符串?
假设您知道某些内容已被选中,您可以这样做
TablePosition pos = table.getSelectionModel().getSelectedCells().get(0);
int row = pos.getRow();
// Item here is the table view type:
Item item = table.getItems().get(row);
TableColumn col = pos.getTableColumn();
// this gives the value in the selected cell:
String data = (String) col.getCellObservableValue(item).getValue();
table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == null) {
selected.setText("");
return;
}
System.out.println(newValue.getId());
});
注意:"getId" 是您的 "get" 列,"table" 是您的表格视图的名称
我解决了。我得到字符串,例如“[1, proveedor1, calzado1, Rojo, 39, 600, 2, 1200]”,并得到第一个单元格 (id) 和子字符串。萨鲁多斯
TablePosition pos = (TablePosition) tableVenta.getSelectionModel().getSelectedCells().get(0);
int index = pos.getRow();
String selected = tableVenta.getItems().get(index).toString();
selected = selected.substring(1, selected.indexOf(","));
System.out.println(selected);
如果您正在使用场景构建器,请为特定列添加一个方法到 On Edit Commit 并在控制器中添加逻辑 class。使用 event.getNewValue()
获取用户输入的新值。例如
@FXML
private void UpdateName(TableColumn.CellEditEvent<ModelClass, String> event) {
ModelClass mc = Table.getSelectionModel().getSelectedItem();
mc.setName(event.getNewValue());
System.err.println("new value "+event.getNewValue());
}
当您允许可编辑的列时使用此选项
假设您没有选择任何行,但知道您想要的位置和内容....
// Item here is the table view type:
Unpaid item = userTable.getItems().get(0);
TableColumn col = userTable.getColumns().get(3);
// this gives the value in the selected cell:
String data = (String) col.getCellObservableValue(item).getValue();
JOptionPane.showMessageDialog(null, data);
你可以使用这段代码,我认为它可以工作
String a=personTable.getColumns().get(0).getCellObservableValue(0).getValue().toString();
System.out.println("value"+a);
我正在使用该方法获取整个对象。
tableView.getSelectionModel().getSelectedItem()
如何从单个单元格中获取数据?
我的意思是像获取 S20BJ9DZ300266 作为字符串?
假设您知道某些内容已被选中,您可以这样做
TablePosition pos = table.getSelectionModel().getSelectedCells().get(0);
int row = pos.getRow();
// Item here is the table view type:
Item item = table.getItems().get(row);
TableColumn col = pos.getTableColumn();
// this gives the value in the selected cell:
String data = (String) col.getCellObservableValue(item).getValue();
table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == null) {
selected.setText("");
return;
}
System.out.println(newValue.getId());
});
注意:"getId" 是您的 "get" 列,"table" 是您的表格视图的名称
我解决了。我得到字符串,例如“[1, proveedor1, calzado1, Rojo, 39, 600, 2, 1200]”,并得到第一个单元格 (id) 和子字符串。萨鲁多斯
TablePosition pos = (TablePosition) tableVenta.getSelectionModel().getSelectedCells().get(0);
int index = pos.getRow();
String selected = tableVenta.getItems().get(index).toString();
selected = selected.substring(1, selected.indexOf(","));
System.out.println(selected);
如果您正在使用场景构建器,请为特定列添加一个方法到 On Edit Commit 并在控制器中添加逻辑 class。使用 event.getNewValue()
获取用户输入的新值。例如
@FXML
private void UpdateName(TableColumn.CellEditEvent<ModelClass, String> event) {
ModelClass mc = Table.getSelectionModel().getSelectedItem();
mc.setName(event.getNewValue());
System.err.println("new value "+event.getNewValue());
}
当您允许可编辑的列时使用此选项
假设您没有选择任何行,但知道您想要的位置和内容....
// Item here is the table view type:
Unpaid item = userTable.getItems().get(0);
TableColumn col = userTable.getColumns().get(3);
// this gives the value in the selected cell:
String data = (String) col.getCellObservableValue(item).getValue();
JOptionPane.showMessageDialog(null, data);
你可以使用这段代码,我认为它可以工作
String a=personTable.getColumns().get(0).getCellObservableValue(0).getValue().toString();
System.out.println("value"+a);