Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

JavaFX er ment å være Java Swing sin etterfølger som Java sitt det foretrukne rammeverk for grafikk og brukergrensesnitt fra og med Java 7. JavaFX er gjør det bl.a. mer fleksibelt i hvordan man kan enklere å kombinere grafikk og interaktive komponenter, har bedre støtte for rik grafikk og animasjon, gjør det lettere å skille funksjon og det rent visuelle.

Et GUI-rammeverk er en samling klasser som gjør det mulig å bygge rike, funksjonelle grafiske brukergrensenitt uten alt for mye arbeid. Brukergrensesnitt bygget med slike rammeverk har noenlunde samme struktur, og her skal vi gi en liten introduksjon med utgangspunkt i JavaFX-rammeverket. Vi har valgt JavaFX, fordi det er mer fleksibelt og moderne enn Java Swing, som det er ment å ta over etter og det ligner mer på andre "rammeverk" som HTML5 og Flash.

...

Selv om JavaFX nå er en del av Java 7-installasjonen, så er det ikke trivielt å sette opp et Java-prosjekt for JavaFX-applikasjoner på egen hånd. Derfor anbefales det å installere e(fx)clipse-tillegget til Eclipse, som gjør det mye lettere.

Vi deler gjerne rammeverket opp i håndtering av

  • kjøring/oppstart av programmer
  • strukturer av grafiske og interaktiver elementer, altså det rent visuelle
  • interaktivitet, altså brukerinput og dynamikk
  • brukergrensesnittdefinisjonsfiler

Et "vanlig" program starter naturlig nok med det første. Så bygges det opp en visuell struktur, med en blanding av rent grafiske elementer og interaktive komponenter (ofte kalt widgets). De interaktive elementene knyttes deretter til programlogikken som skal reagere på og håndtere input fra brukeren. De fleste rammeverk gjør det mulig å beskrive det andre punktet i separate XML-filer (litt som HTML brukes for web-sider), slik at programmet blir mindre og ryddigere.

Vi skal ta disse i tur og orden.

Kjøring/oppstart av programmer

JavaFX har en egen programklasse kalt Application (i pakken javafx.application) som en må arve fra. Denne definerer en del metoder som kalles når programmet initialiseres (init), starter (start) opp og stopper (stop). Av disse er det bare start-metoden som må defineres i din egen hovedprogramklasse. Men merk at det ikke er din egen kode som oppretter instansen av hovedprogramklassen og kaller disse oppstartsmetodene, det er det rammeverket selv som gjør. Og for at det skal skje må du i main-metoden kalle den statiske metoden launch i Application-klassen med navnet til din egen klasse som første argument og programargumentene til din main-metode som launch-metoden sitt andre argument. En minimalt hovedprogramklasse er vist under til venstre, med applikasjonsvinduet som da dukker opp til høyre:

Code Block
languagejava
collapsetrue
public class MinimalApplication extends Application {
	
	@Override
	public void start(Stage stage) throws Exception {
		
		Group root = new Group(); // Root of the scene graph
		
		Scene scene = new Scene(root,500,500, Color.AQUA);
		
		stage.setScene(scene);
		stage.setTitle("Simple JavaFX");
		stage.show();
	}

	public static void main(String[] args) {
		launch(MinimalApplication.class, args);
	}
}
 

 

 

 

Som programmerer må man forholde seg til et fullstendig nytt API (klassene og metodene som utgjør rammeverket), men overgangen er ikke så stor fordi en godt kan bruke kjente teknikker og gradvis ta i bruk de nye mulighetene.

Basic oppbygning 

En JavaFX applikasjon er bygget opp med en stage i bunn som utgjør rammen til applikasjonen, og har typisk et navn som vises øverst applikasjonsvinduet. En stage fylles med en scene. Scenen utgjør området hvor vi framstiller knapper, figurer, tekst og andre komponenter. Dette skjer dog ikke helt vilkårlig, siden alle komponenter må legges til i en scene graph, og kalles da noder i denne grafen. Grafens struktur bestemmer hvordan nodene rendres på scenen.

...