从JavaFX TableView获取所选项目

时间:2013-06-30 09:14:36

标签: java javafx tableview

如何从JavaFX中的TableView获取所选项目?

我目前正在使用

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

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

7 个答案:

答案 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());