从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());