2017-05-21 8 views
0

erhalten Werte Ich bin an einem Projekt arbeiten, wo die Tableview wie folgt aussehen: The TableViewJavaFX: Tableview: ausgewählte Zeilenzelle

Die Daten sind innerhalb einer MySQL-Datenbank, und ich verwende ein Modell und eine observableArrayList zu schnappt sie.

Ich möchte eine initialisieren Methode, die die gesamte ausgewählte Zeile lesen und speichern Sie es in den TextFields (wie Name-Name, Adresse - Adresse usw.). Ich habe versucht, mit diesem, und jetzt kann ich die ganze Linie Daten auswählen, aber kann es nicht in Strings spaltete die TextField- Texte zu setzen:

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

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

Versuchte mit dem Modell getName(), getAdress() Methoden, aber ich hat die Methoden NullPointerException und TablePos erhalten.

Antwort

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

Eine Möglichkeit könnte den Wert der Spalten der ausgewählten Zeile werden zu extrahieren, etwa so:

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