Versions Compared

Key

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

...

Et prosjekt er enkelt sagt en mappe med innhold/oppsett tilpasset typen app en skal lage. Først og fremst handler det om å velge programmeringsspråk, så når du skal lage en ny app med JavaFX, så må du lage et Java-prosjekt. Du vil da få en mappe med flere under-mapper, og en av disse heter `src` og vil inneholde all koden din. For at de ikke skal bli for uoversiktlig, spesielt hvis du har flere app-er i samme prosjekt, så bør du så lage en Java-mappe for app-en din. Når det er gjort så kan lage Java-filen for app-en din!

Lag et nytt Java-prosjekt ved å velge File > New > Java Project (altså New > Java Project fra File-menyen). Du vil da få opp et skjema hvor du bl.a. kan fylle inn navnet på prosjektet. Skriv kodeklubben eller et annet passende navn. Merk at du bør holde deg til de engelske bokstavene a-z og A-Z, ellers får du lett problemer siden. De andre innstillingene lar du være.

I Package Explorer-panelet vil du se at det dukker opp en mappe med navnet du valgte. Inne mappa vil du ha en src-mappe og en mappe som heter JRE System Library [JavaSE-1.8]. src-mappa er der du legger koden din, mens JRE System Library [JavaSE-1.8] viser at prosjektet er satt for å bruke Java 8, som vi trenger for å bruke JavaFX. Skjermutklippet til høyre viser omtrent hvordan det vil bli seende ut. 

Lag en ny Java-mappe for app-en i denne leksjonen. Java kaller slike mapper for pakker, men du kan tenke på dem som mapper. Pass først på at du har valgt (klikket på) riktig Java-prosjekt i Package Exporer-panelet. Velg så  File > New > Package eller ikonet som ser ut som en pakke med et pluss-tegn i hjørnet. Alternativt kan du høyre-klikke på src-mappa og velge New > Package.

Du vil da få opp et skjema hvor du kan skrive inn hvilken kode-mappe (Source Folder) som pakken skal puttes i og pakke-navnet. Kode-mappen skal være kodeklubben/src (eller prosjektnavnet du skrev inn tidligere etterfulgt av /src. Pakkenavn inneholder som regel bare små bokstaver, altså bokstaven a-z. Derfor kan du kalle mappa helloworld.

Skjema for å lage Java-pakke

Etterpå skal det se omtrent slik ut:

Lag en ny Java-klasse (Java-filer kalles klasser) ved å høyre-klikke på helloworld-pakka du nettopp lagde og velge New > Class.

Meny for å lage ny Java-klasse

Skjema for å lage ny Java-klasse

Etterpå skal det se omtrent slik ut:

...

En Hello World-app er ment å være den enkleste app-en en kan tenke seg som viser Hello World på skjermen. F.eks. slik som dette: 

En slik app må inneholde følgende elementer:

  • Den må bygge på Application-klassen (i pakken javafx.application) ved at du skriver extends Application i klassedefinisjonen. Uten det, er klassen rett og slett ikke en app-klasse.
  • Den inneholde en metode (Java-funksjoner kalles metoder) kalt start som lager og putter skjermbilde-elementene inn i app-vinduet (som den får som argument).
  • Den kan inneholde en init-metode som typisk brukes for å initialisere variabler i app-en. Koden under har ikke en slik metode.
  • Oppstartsfunksjonen main, som kjøres når klassen din startes som et program, må kalle launch-metoden med klassen din som argument.


Når du kjører koden vil følgende skje:

  • App-en din vil bli laget. App-en vil være et HelloWorldApp-objekt, også kalt en instans av HelloWorldApp-klassen.
  • init-metoden vil bli kalt (hvis du har en, og det har ikke koden vår)
  • App-vinduet vil bli laget (automatisk av JavaFX, ikke av vår kode)
  • start-metoden blir kalt med app-vinduet som argument (det er derfor det står (Stage primaryStage) bak start-navnet)

Her er den nødvendige koden, med kommentarer:

Code Block
languagejava
// klassen ligger i pakken helloworld, og
// det må stemme med package-deklarasjonen
package hello world;

// med en import-setning, så slipper en å skrive hele navnet på klassene vi bruker
// vi har like godt en import-setning for hver av klassene vi bruker
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;


// bygg på Application-klassen med extends
// det er det som gjør at vår klasse kan fungere som en JavaFX-app
public class HelloWorldApp extends Application {
	// her er metoden som kalles med app-vinduet
	// den tar inn app-vinduet som argument
	public void start(Stage primaryStage) {
		// vi lager oss det grafiske tekst-objektet, av typen Text
		Text helloWorldText = new Text("Hello world");
		// så sier vi hvor i vindet den skal plasseres, x- og y-posisjon
		helloWorldText.setLayoutX(10);
		helloWorldText.setLayoutY(50);
		// vi lager oss et font-objekt, av typen Font
		Font font = Font.font("Arial", 36);
		// og setter den som teksten font
		helloWorldText.setFont(font);
		// vi mnå også lage et panel, av typen Pane
        Pane root = new Pane();
        // vi setter ønsket størrelse, bredde og høyde
        root.setPrefWidth(300);
        root.setPrefHeight(200);
        // og putter teksten inni 
		root.getChildren().add(helloWorldText);
		
		// til slutt legges panelet inn i app-vinduet
        primaryStage.setScene(new Scene(root));
        // og vises frem
        primaryStage.show();
	}
	// dette er den egentlig oppstartsmetoden
	public static void main(String[] args) {
		// kall den innebygde funksjonen launch, med app-klassen vår som argument
		launch(HelloWorldApp.class, args);
	}
}