Java FX – Ria in salsa Java. Introduzione

di - 31 luglio 2012 in Programmazione

Con questo primo articolo diamo avvio a un percorso volto ad introdurre JavaFX®, si tratta di un interessantissimo set di strumenti che consento di creare applicazioni conformi delle Rich Internet Application e che si pone pertanto in aperta competizione con Flash® di Adobe® e SirlverLight® di Microsoft®, uno degli aspetti che però distingue fortemente JavaFX® dai suoi principali è quello di essere platform indipendent, inoltre è perfettamente integrato con il Java Runtime, pertanto ogni device in grado di utilizzare Java® può diventare un target per una applicazione JavaFX®.

Attualmente, l’ultima release disponibile è la 2.1.1, la quale può essere scaricata a questo indirizzo web. Inoltre nella sezione denominata “Tools” è possibile scaricare JavaFX Scene Builder, si tratta di un utilissimo tool visuale con cui è possibile definire l’interfaccia grafica della nostra applicazione, applicare fogli stili, modificare le proprietà dei diversi oggetti garantendo nel contempo che dette operazioni saranno immediatamente riportate nel file FXML che descrive l’interfaccia, il quale a sua volta può essere combinato con un progetto Java® grazie al quale associare i diversi gestori di eventi ai componenti di cui consta l’interfaccia.

Affinché sia possibile testare i diversi esempi che presenteremo di qui in avanti è necessario che siano installati i seguenti elementi software:

  • NetBeans® 7.1 o superiore, a questo proposito i vari codici d’esempio saranno sviluppati utilizzando NetBeans 7.2®
  • JDK 7
  • JavaFX 2.1.1
  • Scene Builder

Detto questo descriviamo in che modo configurare il nostro ambiente di sviluppo dopo di che di mostreremo come creare la nostra prima applicazione JavaFX, si tratterà di creare il famigerato “Hello World!”.

I passi per configurare il nostro ambiente prevedono nell’ordine di installare:

  1. JDK
  2. JavaFX
  3. NetBeans
  4. Scene Builder

Si tenga presente che creare delle nuove variabili di ambiente per gestire correttamente la compilazione e l’esecuzione dei nostri codici.

Al termine del processo di installazione di questi quattro elementi configuriamo NetBeans® in modo da permettergli di:

  • Compilare correttamente il codice;
  • Utilizzare Scene Builder per la costruzione dell’interfaccia.

Per realizzare il primo punto è sufficiente accedere alla voce “Tools->Java Platforms”, in particolare se le installazioni dei componenti precedenti non hanno prodotto messaggi di errori ci si dovrebbe trovare di fronte ad una situazione simile a quella descritta dall’immagini seguente:

 JDK® installato e individuato correttamente

In caso di problemi, quali ad esempio mancata identificazione dell’interprete JavaFX® si dovrà aggiungere manualmente le informazioni riguardanti i percorsi mancanti selezionando per mezzo di ”Esplora Risorse” la directory in cui si è eseguita l’installazione.

Chiaramente tra gli altri requisiti per poter utilizzare le JavaFX è necessario che queste siano abilitate, a tal proposito come si può osservare dalle immagini precedenti questo requisito è verificato non appena si spunta la voce “Enable JavaFX”.

A questo punto siamo pronti a vedere il nostro primo codice di esempio, in particolare presenteremo due diverse versione dello stesso codice, la prima, descritta in questo articolo, in particolare definisce l’intera logica dell’applicazione all’interno di un unico file, pertanto saranno presenti i comandi necessari alla definizione dei diversi elementi; nella seconda versione, che presenteremo nel prossimo appuntamento, divideremo la logica di visualizzazione dalla logica di controllo, rispettando in questo modo la classica divisione dei compiti dettata la Design Pattern MVC (Model-View-Controller).

 

 

  1. package helloworld2;
  2. import javafx.application.Application;
  3. import javafx.event.ActionEvent;
  4. import javafx.event.EventHandler;
  5. import javafx.scene.Scene;
  6. import javafx.scene.control.Button;
  7. import javafx.scene.layout.StackPane;
  8. import javafx.stage.Stage;

/**

*

@author Alessandro

*/

  1. public class HelloWorld2 extends Application {
  2. @Override
  3.       public void start(Stage primaryStage) {
  4.       Button btn = new Button();
  5.       btn.setText(“Say ‘Hello World'”);
  6.       btn.setOnAction(new EventHandler<ActionEvent>() {
  7.              @Override
  8.               public void handle(ActionEvent event) {

System.out.println(“Hello World!”);

  1.                }
  2.            });

 

  1.     StackPane root = new StackPane();
  2.     root.getChildren().add(btn);

 

  1.    Scene scene = new Scene(root, 300, 250);

 

  1.    primaryStage.setTitle(“Hello World!”);
  2.    primaryStage.setScene(scene);
  3.    primaryStage.show();
  4.  }

 

  1.     public static void main(String[] args) {
  2.         HelloWorld2 app = new HelloWorld2();
  3.         app.start(new Stage());
  4.     }
  5. }

 

Cerchiamo ora di esaminare più nel dettaglio il codice.

Numero Riga Descrizione
11 Il metodo start non è altro che l’entry point dell’applicazione e viene invocato al termine della fase di init dal thread responsabile della gestione della sessione.
12-13 Creazione di un nuovo oggetto di tipo Button ed impostazione della label
14-18 Creazione di un event handler, si noti a questo riguardo come la creazione dell’handler coincida quasi perfettamente con quella utilizzata per le applicazioni Swing, ciò che muta infatti sono solo i nomi per i gestori degli eventi, che in JavaFX® assumono la forma setOnXXXX(EventHandler)
19 Creazione dello StackPane è il container grazie al quale si definisce l’ordine con cui saranno successivamente inseriti i diversi elementi all’interno dell’interfaccia utente.
20 Inserimento del pulsante creato in precedenza all’interno dello stackpane
21 Creazione di un’instanza dell’oggetto Scene, nel nostro caso specifico vengono forniti come argomento:

  • lo stackpane in cui sono stati “parcheggiati” gli elementi che contribuiranno a definire l’interfaccia
  • le dimensioni della finestra

Se volessimo fare un parallelo con le Swing la Scene è paragonabile alla classe JFrame

24 Invocazione del metodo show() il suo significato è simile a quello del metodo setVisibile
27-28 Creazione ed avvio dell’applicazione

A questo punto si rende necessaria una precisazione, l’approccio seguito nelle righe 27-28 del codice in realtà non è quello standard infatti le specifiche JavaFX® prevedono l’invocazione del metodo launch in particolare nel caso del nostro codice, le istruzioni utilizzate per avviare HelloWorld2 andrebbero sostituite con la seguente invocazione:

launch(args);

In questo modo si rende evidente il parallelismo con il meccanismo di gestione dei Thread, non a caso, infatti, ciò che avviene con l’invocazione del metodo launch è proprio la creazione di un nuovo thread.

A questo punto possiamo considerare completato il nostro primo contatto con le JavaFX® nel prossimo articolo descriveremo in che modo riscrivere il codice relativo all’applicazione presentata utilizzando i file FXML, Scene Builder ed in che modo legare la specifica XML con la gestione degli eventi.


 

 

Share

Promozioni

Potrebbe interessarti



Commenti