Continuiamo ad esplorare TornadoFX, framework per la costruzione di interfacce grafiche in Kotlin.

Oggi vediamo come usare le Combobox; le riempiremo da una FXCollections, ed intercetteremo il valore selezionato.

Non è un esempio complesso, ma un punto da cui partire.

In questo articolo abbiamo visto una introduzione in Kotlin a TornadoFX.

Oggi vediamo un'altra cosa interessante, e cioè come iniettare componenti dentro ad una View.

Partiamo dalle due View che fanno da top e bottom:

// TOP

import tornadofx.View
import tornadofx.label

class TopView: View() {
    override val root = label("Siamo al TOP!")
    lateinit var parent: MainView
}

Kotlin ha disposizione tutti i framework standard di Java per la costruzione di interfacce grafiche.

Ma c'è un progetto che sta prendendo piede basato su JavaFX, che sembra molto promettente: TornadoFX!

Vediamo un esempio introduttivo; se usate Maven aggiungete questa diependenza:

        <dependency>
            <groupId>no.tornado</groupId>
            <artifactId>tornadofx</artifactId>
            <version>1.7.12</version>
        </dependency>

Continuando nel mio studio di Kotlin, mi sono imbattutto nella creazione di file ZIP con più files contemporaneamente.

Quindi, per fare un esempio basico, partendo da un array di file, vediamo come inserirli in un file ZIP.

Come già detto più volte, essendo Kotlin basato su Java, è possibile usare le stesse librerie.

E così per connetterci ad un database MariaDB (e MySQL) possiamo usare lo standard JDBC!

Oggi ne vediamo un esempio basico, giusto per iniziare.

Senza usare librerie esterne (cosa fattibile visto tutte le librerie disponibili per Java), per intercettare l'input dell'utente in Kotlin possiamo usare sia la classe Scanner che readLine.

Io preferisco Scanner, e quindi vedremo un esempio basico usando questa classe.

Partiamo dal presupposto che in Kotlin non esiste il concetto di statico.

Quindi è possibile usare il pattern Singleton, ma in maniera un pò differente da Java.

Avremmo sempre il costruttore (primario) privato, e al posto di metodi statici useremo i companion object.

Fuel è un'altra libreria per eseguire richieste HTTP in Kotlin.

Di base ha due dipendenze; se usate Maven:

    <dependencies>
        <dependency>
            <groupId>com.github.kittinunf.fuel</groupId>
            <artifactId>fuel</artifactId>
            <version>1.8.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.kittinunf.result</groupId>
            <artifactId>result</artifactId>
            <version>1.1.0</version>
        </dependency>
    </dependencies>

Kotlin ha un supporto completo per gli Enum, e mette anche a disposizione alcuni metodi statici abbastanza comodi.

Vediamo un esempio basico.

Per tipo di variabile intendo che tipo di oggetto è una determinata variabile.

Può essere utile in alcuni per capire bene cosa restituisce un determinato oggetto.

In Java si usa instanceof, che corrisponde alla parola chiave is in Kotlin.