从JavaFX TableView获取所选项目
如何从JavaFX中的TableView
获取所选项?
我目前正在使用
ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();
但这并没有返回选择模型中的一个选定项目。
好吧,假设您有一个名为Person
的数据模型类。 这条路:
Person person = taview.getSelectionModel().getSelectedItem(); System.out.println(person.getName());
请注意, TableView
必须将Person
作为类型参数以避免强制转换:
@FXML private TableView taview;
要么
TableView taview = new TableView<>();
选择行后,您将返回一个Person
实例。 然后使用该实例执行您想要的任何操作。
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获取所选值。
谢谢..
@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); } });
你可以从tableview获取数据
对于一个ItemSelection
`tableview_obj.getSelectionModel().getSelectedItem().yourgetterobjectname`
和多项目选择
tableview_obj.getSelectionModel().getSelectedItems().get(indexNo).yourgetterobjectname
你可以使用这种方法,也许它适合你
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();
如果你有一个名为Employee的Bean类。
Employee employee= tblView.getSelectionModel().getSelectedItem(); txtEmployeeName.setText(employee.getName());