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!
java javafx tableview mouseevent
Commentami!