it-swarm.com.de

Ausgewähltes Element aus einer JavaFX TableView erhalten

Wie bekomme ich das ausgewählte Element aus einer TableView in JavaFX?

Ich benutze gerade

ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();

aber das gibt nicht das eine ausgewählte Element im Auswahlmodell zurück.

28
Josejacob99

Ok, nehmen wir an, Sie haben eine Datenmodellklasse namens Person. Diesen Weg:

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

Beachten Sie, dass TableView ein Person als Typargument annehmen muss, um das Casting zu vermeiden:

@FXML
private TableView<Person> taview;

oder 

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

wenn Ihre Zeile ausgewählt ist, geben Sie eine Person-Instanz zurück. Dann machen Sie mit dieser Instanz, was immer Sie wollen.

74
Branislav Lazic
    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 Cell erhalten.

Vielen Dank..

7
Java Man

@pranishres

Hier ist mein Versuch für einen Listener für die Zellauswahl (auch wenn sich die Zeile nicht ändert), inspiriert durch den Code von @Java Man:

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);
    }
});
2
O. Durand

so können Sie Daten aus der Tabellenansicht abrufen

Für eine Artikelauswahl

`tableview_obj.getSelectionModel().getSelectedItem().yourgetterobjectname`

und Mehrfachauswahl

tableview_obj.getSelectionModel().getSelectedItems().get(indexNo).yourgetterobjectname

0
13hola