35

如何从TableViewJavaFX 中获取所选项目?

我目前正在使用

ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();

但这并没有返回我选择模型中的一个选定项目。

4

7 回答 7

90

好的,假设您有一个名为Person. 这边走:

Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());    

请注意,TableView必须将 aPerson作为类型参数以避免强制转换:

@FXML
private TableView<Person> taview;

或者

TableView<Person> taview = new TableView<>();

当您的行被选中时,您将返回一个Person实例。然后对那个实例做任何你想做的事情。

于 2013-06-30T10:25:37.833 回答
9
    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 中获取选定的值。

谢谢..

于 2014-02-26T09:19:58.100 回答
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);
    }
});
于 2016-04-06T09:38:52.627 回答
2

对于单项选择...

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());      
}
于 2020-03-22T11:13:29.893 回答
0

你可以使用这个方法也许它对你有用

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();
于 2018-07-27T18:23:08.037 回答
0

你可以像这样从tableview获取数据

单品选择

`tableview_obj.getSelectionModel().getSelectedItem().yourgetterobjectname`

和多个项目选择

tableview_obj.getSelectionModel().getSelectedItems().get(indexNo).yourgetterobjectname

于 2018-07-16T10:04:11.810 回答
-2

如果您有一个名为 Employee 的 Bean 类。

Employee employee= tblView.getSelectionModel().getSelectedItem();
txtEmployeeName.setText(employee.getName());
于 2017-12-16T07:49:45.787 回答