Vogliamo riempire una ComboBox in JavaFX con oggetti custom: come possiamo fare?

Adesso lo vediamo, partendo proprio dall'oggetto custom:

public class Author {

    private String id;
    private String name;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Author)) {
            return false;
        }
        Author a = (Author) obj;
        return this.name.equals(a.toString());
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 59 * hash + (this.name != null ? this.name.hashCode() : 0);
        return hash;
    }

Nulla di trascendentale.

Le QComboBox sono componenti grafici che corrispondono ai classici menu a tendina.

E' possibile riempire una QComboBox in diversi modi.

Oggi vediamo come riempirla da una QStringList.

In questo articolo avevamo visto come riempire una TableView da database in JavaFX.

Qui vediamo come impostare ordinamento a filtro; in pratica potremmo ordinare la tabella cliccando sull'intestazione, ed eseguire ricerche attraverso una casella di testo.

Da dove prendiamo i dati, in questo caso, non è importante; quindi tralascerò come riempire la lista.

Sono rimasto sorpreso dal poco codice che ho dovuto scrivere per listare file e directory in Kotlin.

Vediamo tre esempi, con tre funzioni diverse:

  • list() -> ritorna un array di String, e quindi stampa solo il nome dei file
  • listFiles() -> ritorna un array di File, e quindi è possibile accedere a tutte le varie funzioni e proprietà di un oggetto File
  • walk() -> che produce un FileTreeWalk, e lista i file in maniera ricorsiva; ci sono anche le funzioni walkBottomUp() e walkTopDown(), che si differenziano solo per il verso un cui eseguono la scansione (poetet vedere su Stack Overflow la mia domanda)

JavaFX arriva già con strumenti per la creazione di grafici senza usare librerie esterne.

Sono anche abbastanza semplici da usare.

Vediamo un esempio di PieChart.