2013-06-30 11 views

Antwort

59

Ok, nehmen wir an, Sie haben eine Datenmodellklasse mit dem Namen Person. Auf diese Weise:

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

Beachten Sie, dass TableView müssen Person als eine Art Argument Gießen zu vermeiden:

@FXML 
private TableView<Person> taview; 

oder

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

wenn Ihre Zeile ausgewählt ist, werden Sie eine Rückkehr Person Instanz. Dann mach was du willst mit dieser Instanz.

+0

** Dankeschön ** so viel – user2536158

+0

Gern geschehen! :) –

+0

schnell und einfach .. – rainer

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

mit diesem Code können Sie den ausgewählten Wert von JavaFX TABLEVIEW Handy bekommen.

Dank ..

+0

dieser Code arbeitete für mich. Aber es funktioniert nur, wenn ich eine andere Zeile auswähle. Wie führe ich diesen Code jedes Mal aus, wenn eine Tabellenzelle ausgewählt wird, selbst wenn dieselbe Zeile ausgewählt ist? – viper

+0

Gibt es eine Möglichkeit, die Mauskoordinate in diesem Listener so anzuzeigen, dass sie ein Popup-Menü anzeigt? – leobelizquierdo

2

@pranishres

Hier ist mein Versuch für einen Wechsel Zuhörer Zellenauswahl (auch wenn Zeile ändert sich nicht), inspiriert von @Java Man Code:

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); 
    } 
}); 
+0

hat für mich gearbeitet;) danke –

-1

Wenn Sie eine Bean-Klasse namens Employee haben.

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

warum wiederhole die angenommene antwort? – kleopatra