【问题标题】:Getting selected item from a JavaFX TableView从 JavaFX TableView 中获取选定项目
【发布时间】:2013-06-27 15:40:24
【问题描述】:

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

我正在使用

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

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

【问题讨论】:

    标签: java javafx tableview


    【解决方案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());      
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 在你的回答中添加一些描述。
      【解决方案3】:

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

      单项选择

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

      和多个项目选择

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

      【讨论】:

        【解决方案4】:

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

        Employee employee= tblView.getSelectionModel().getSelectedItem();
        txtEmployeeName.setText(employee.getName());
        

        【讨论】:

          【解决方案5】:

          @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);
              }
          });
          

          【讨论】:

            【解决方案6】:

            好的,假设您有一个名为Person 的数据模型类。这样:

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

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

            @FXML
            private TableView<Person> taview;
            

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

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

            【讨论】:

              【解决方案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 单元格中获取所选值。

              谢谢..

              【讨论】:

              • 这段代码对我有用。但它仅在我选择另一行时才有效。即使选择了同一行,每次选择表格单元格时如何运行此代码
              • 有什么方法可以让这个监听器内部的鼠标坐标显示一个弹出菜单之类的东西?
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-11-21
              • 1970-01-01
              • 1970-01-01
              • 2015-08-14
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多