【问题标题】:JavaFX: TableView: get selected row cell valuesJavaFX:TableView:获取选定的行单元格值
【发布时间】:2017-05-21 13:37:15
【问题描述】:

我正在开发一个 TableView 如下所示的项目:

里面的数据是一个 MySQL 数据库,我使用一个 modell 和一个 observableArrayList 来获取它们。

我想做一个 initialize 方法来读取整个选定的行并将其保存到文本字段中(如名称-名称、地址-地址等)。我试过了,现在我可以选择整行数据,但不能将其拆分为字符串来设置 TextField 文本:

ListViewerModell details = (ListViewerModell) table.getSelectionModel().getSelectedItem();

//Checking if any row selected
if (details != null) {
//??? - split
editName.setText("*Name*");
editAddress.setText("*Address*");
}

尝试使用 modell getName()、getAdress() 方法,但我得到了 NullPointerException 和 TablePos 方法。

【问题讨论】:

    标签: java javafx


    【解决方案1】:
    // create table
    TableView<Person> table = new TableView<Person>();
    
    // create columns
    TableColumn<Person, String> nameCol = new TableColumn<Person, String>("Name");
    nameCol.setCellValueFactory(new PropertyValueFactory("name"));
    
    TableColumn<Person, Address> addressCol = new TableColumn<Person, String>("Address");
    addressCol.setCellValueFactory(new PropertyValueFactory("address"));
    
    // add columns 
    table.getColumns().setAll(nameCol, addressCol);
    
    // get data from db, return object List<Person> from DB 
    ObservableList<Person> persons = getPersonsFromDB();
    table.setItems(persons);
    
    tableView.setOnMouseClicked((MouseEvent event) -> {
        if (event.getClickCount() > 1) {
            onEdit();
        }
    });
    
    public void onEdit() {
        // check the table's selected item and get selected item
        if (table.getSelectionModel().getSelectedItem() != null) {
            Person selectedPerson = table.getSelectionModel().getSelectedItem();
            nameTextField.setText(selectedPerson.getName());
            addressTextField.setText(selectedPerson.getAddress());
        }
    }
    

    【讨论】:

      【解决方案2】:

      一种方法是提取所选行的列的值,如下所示:

         Object selectedItems = table.getSelectionModel().getSelectedItems().get(0);
         String first_Column = selectedItems.toString().split(",")[0].substring(1);
         System.out.println(first_Column);
      

      【讨论】:

        猜你喜欢
        • 2018-03-10
        • 2017-09-10
        • 2012-01-06
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 2015-12-05
        • 2015-01-09
        • 2011-10-23
        相关资源
        最近更新 更多