2013-06-30 5 views

risposta

59

Ok, diciamo che si dispone di una classe del modello di dati denominata Person. In questo modo:

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

noti che TableView deve prendere una Person come un argomento di tipo per evitare di casting:

@FXML 
private TableView<Person> taview; 

o

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

quando viene selezionata la riga, si tornerà uno Person istanza. Quindi fai quello che vuoi con quell'istanza.

+0

** thanku ** così tanto – user2536158

+0

Siete i benvenuti! :) –

+0

rapido e semplice .. – 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); 
     } 
     } 
    }); 

Utilizzando questo codice è possibile ottenere il valore selezionato da JAVAFX TABLEVIEW Cell.

Thanks ..

+0

questo codice ha funzionato per me. Ma funziona solo quando seleziono un'altra riga. Come faccio a eseguire questo codice ogni volta che viene selezionato un tablecell anche se è selezionata la stessa riga – viper

+0

C'è un modo per ottenere la coordinata del mouse all'interno di questo listener per mostrare qualcosa come un menu popup? – leobelizquierdo

2

@pranishres

Ecco la mia prova per un cambiamento ascoltatore selezione cella (anche se di fila non cambia), ispirati dal codice @java dell'uomo:

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

ha funzionato per me;) grazie –

-1

se si dispone di una classe Bean denominata Dipendente.

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

perché ripetere la risposta accettata? – kleopatra