java JavaFX:TableView:获取选定的行单元格值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/44097537/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 07:56:18  来源:igfitidea点击:

JavaFX: TableView: get selected row cell values

javajavafx

提问by DeluxeD

I'm working on a project where the TableView looks like this: The TableView

我正在做一个 TableView 看起来像这样的项目: 表视图

The datas are inside are a MySQL database, and I use a modell and an observableArrayList to get them.

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

I want to make an initializemethod which read the whole selected Line and save it into the TextFields (like Name-Name, Address - Address etc). I tried with this, and now I can Select the Whole Line data, but can't split it into Strings to set the TextField texts:

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

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

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

Tried with the modell getName(), getAdress() methods but I got NullPointerException and TablePos methods.

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

回答by CemIkta

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

回答by rainer

One way could be extracting the value of the columns of the selected row, like so :

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

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