Identificare riga selezionata di una TableView in JavaFX

Mattepuffo's logo
Identificare riga selezionata di una TableView in JavaFX

Identificare riga selezionata di una TableView in JavaFX

Partiamo dal presupposto che riempiamo una TableView in JavaFX usando oggetti custom.

Non mi metterò a spiegare come riempire una lista; potete vedere in un precedente articolo per come riempirla da database.

Qui vederemo come intercettare la riga selezionata, e come prendere i dati del relativo oggetto custom.

Che è questo:

public class Book {

    private String id;
    private String title;
    private String author;
    private String editor;
    private String price;
    private String isbn;
    private String note;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getEditor() {
        return editor;
    }

    public void setEditor(String editor) {
        this.editor = editor;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }
}

Da qualche parte riempiamo la nostra tabella, sulla quale impostiamo un evento:

<TableView fx:id="tblBooks" 
BorderPane.alignment="CENTER" 
onMouseClicked="#onTblDoubleClick"/>

Questo il realtivo evento nel nostro controller:

    @FXML
    private void onTblDoubleClick(MouseEvent me) {
        if (me.getClickCount() == 2) {
            Book book = (Book) tblBooks.getSelectionModel().getSelectedItem();
            System.out.println(book.getTitle());
    }

Prima controlliamo che i click del mouse siano due.

Poi stampiamo il titolo del libro; essendo la riga un oggetto Book, possiamo accedere a qualsiasi proprietà ovviamente.

Enjoy!


Condividi

Commentami!