如何从JavaFX中的TableView
获取所选项目?
我目前正在使用
ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();
但是这并没有返回选择模型中的一个选定项目。
答案 0 :(得分:76)
好吧,假设您有一个名为Person
的数据模型类。这样:
Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());
请注意,TableView
必须将Person
作为类型参数以避免转换:
@FXML
private TableView<Person> taview;
或
TableView<Person> taview = new TableView<>();
选择行后,您将返回一个Person
实例。然后用那个实例做你想做的事。
答案 1 :(得分:7)
tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
//Check whether item is selected and set value of selected item to Label
if(tableview.getSelectionModel().getSelectedItem() != null)
{
TableViewSelectionModel selectionModel = tableview.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(newValue);
System.out.println("Selected Value" + val);
}
}
});
使用此代码,您可以从JAVAFX TABLEVIEW Cell获取所选值。
谢谢..
答案 2 :(得分:2)
@pranishres
这是我尝试更改单元格选择更改侦听器(即使行没有更改),受@Java Man代码的启发:
tableView.getSelectionModel().setCellSelectionEnabled(true);
ObservableList selectedCells = tableView.getSelectionModel().getSelectedCells();
selectedCells.addListener(new ListChangeListener() {
@Override
public void onChanged(Change c) {
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(tablePosition.getRow());
System.out.println("Selected Value" + val);
}
});
答案 3 :(得分:1)
一个项目选择
Product p = taview.getSelectionModel().getSelectedItem();
System.out.println(p.getName());
用于多重项目选择
ArrayList<Product> p = new ArrayList<>(taview.getSelectionModel().getSelectedItems());
for (Product res : p) {
System.out.println(res.getName());
}
答案 4 :(得分:0)
您可以像这样从tableview获取数据
一个项目选择
`tableview_obj.getSelectionModel().getSelectedItem().yourgetterobjectname`
和多重项目选择
tableview_obj.getSelectionModel().getSelectedItems().get(indexNo).yourgetterobjectname
答案 5 :(得分:-1)
您可以使用此方法,也许它对您有用
ObservableList rowList = (ObservableList) tblView.getItems().get(getIndex());
,调用方法将是这样
String email = rowList.get(1).toString();
String contact = rowList.get(2).toString();
String name= rowList.get(0).toString();
答案 6 :(得分:-2)
如果你有一个名为Employee的Bean类。
Employee employee= tblView.getSelectionModel().getSelectedItem();
txtEmployeeName.setText(employee.getName());