Parliamo del classico dialog che deve essere visualizzato quando eseguiamo operazioni per le quali l'utente deve aspettare.

Creare un loading dialog in JavaFX è piuttosto semplice.

Lo scopo del codice che vedremo oggi nasce da una esigenza reale: mettere un watermark, corrispondente al nome del file, su tante immagini risiedenti tutte nella stessa cartella.

Facendolo in Java ci ho messo relativamente poco tempo.

Nel programma non è prevista una gui; il path viene dato tramite riga di comando.

Voi, ovviamente, fate tutte le modifiche che volete / vi servono.

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.

Ci sono alcuni IDE che non impostano l'ultima versione di Java come default in Maven.

Ad esempio IntelliJ, che mi ha fatto penare per una mezz'ora abbondante.

Volendo possiamo impostarlo noi nel pom.xml; io lo farei sempre a scanso di equivoci.

Quando si hanno dati in forma tabellare, quasi sicuramente abbiamo bisogno di intercettare qualche evento per recupare i dati.

Qui vediamo come intercettare il doppio click del mouse su una TableView in JavaFX.

Cominciamo dal layout FXML:

<BorderPane xmlns="http://javafx.com/javafx/8.0.112" 
            xmlns:fx="http://javafx.com/fxml/1"
            fx:controller="com.mp.book.ControllerMain">
    <center>
        <TableView fx:id="tblBooks" BorderPane.alignment="CENTER" 

onMouseClicked="#onTblDoubleClick"/>
    </center>
</BorderPane>

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.

Per certi versi, JavaFX, mi ricorda un pò la programmazione Android.

E' tutto molto diverso da come si fa in Swing.

Vediamo un esempio di ListView con oggetti custom.

Ho deciso di eseguire il porting di un mio vecchio programma scritto in Java, da Swing a JavaFX.

Uno dei problemi che ho riscontrato è come rimpire una TableView da database.

Ovviamente le tabelle funzionano in maniera completamente diverse da Swing.

Qua vediamo proprio questo; però tenete in considerazione che:

  • come db uso SQLite (anche se cambia poco)
  • non spiegherò per filo e per segno come usare e installare il driver JDBC per SQLite; vi posterò direttamente il codice

Cominciamo dal db; la tabella che interroghiamo ha questa struttura:

0|id|INTEGER|1||1
1|title|VARCHAR|1||0
2|released|VARCHAR|0||0
3|genre|VARCHAR|0||0
4|director|VARCHAR|0||0
5|writer|VARCHAR|0||0
6|actors|VARCHAR|0||0
7|plot|VARCHAR|0||0
8|poster|VARCHAR|0||0
9|runtime|VARCHAR|0||0
10|imdb_id|VARCHAR|0||0

Unirest è un libreria per creare richieste HTTP in maniera molto semplice e veloce.

E' disponibile per diversi linguaggi, ed oggi vedremo un esempio con Java.

Se usate Maven, aggiungete questa dipendenza al vostro pom.xml:

        <dependency>
            <groupId>com.mashape.unirest</groupId>
            <artifactId>unirest-java</artifactId>
            <version>1.4.9</version>
        </dependency>

JavaFX ha una struttura un pò particolare quando si parla di layout e controller.

Quando siamo appunto nel controller, di default, non sappiamo nulla dello Stage corrente.

E' possibile recepirlo in diversi modi.