簡體   English   中英

JavaFX:TableView:獲取選定的行單元格值

[英]JavaFX: TableView: get selected row cell values

我正在一個TableView看起來像這樣的項目: TableView

里面的數據是一個MySQL數據庫,我使用modell和observableArrayList來獲取它們。

我想做一個初始化方法,該方法讀取整個選定的行並將其保存到TextField中(例如Name-Name,Address-Address等)。 我對此進行了嘗試,現在可以選擇“整行”數據,但是不能將其拆分為字符串以設置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方法。

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM