...
I dette programmet trenger vi to filer: FXML-fila med skjerminnholdet og Java-fila med koden som er koblet til FXML-en. Jeg har tegnet bildet med Scene Builder, og så justerte jeg litt på FXML-en i editoren etterpå, for å legge til et punkt i Polygon-objektet (som først var en trekant). Bildet ser du under til venstre, og FXML-koden er til høyre. Hvis du kopierer FXML-koden inn i Eclipse og åpner Preview-panelet med Window->Show view->Other..., så vil du se det samme bildet.
...
- Metodene (funksjonene) main og start sørger for å starte opp programmet og laste inn FXML-innholdet i et vindu. Etter at vinduet er laget og fylt med FXML-innholdet, så settes variablene som er markert med @FXML til objektene som har tilsvarende fx:id (med litt Java-magi).
- Når programmet er igang vil hendelsesmetodene bli kalt når spilleren gjør bestemte ting. F.eks. vil handleTrykkHer bli kalt når brukeren trykker på knappen, fordi vi har skrevet onAction="#handleTrykkHer" i Button-elementet. Hvis du lager flere knapper, så må du finne på nye metodenavn og legge dem inn i både Java-koden og FXML-en på samme måte.
Her er all koden for eksemplet:
Code Block |
---|
package trinn2; import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.shape.Polygon; import javafx.stage.Stage; public class Strekmann extends Application { @Override public void start(Stage primaryStage) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(this.getClass().getResource("Strekmann.fxml")); fxmlLoader.setController(this); Parent root = (Parent) fxmlLoader.load(); primaryStage.setScene(new Scene(root)); primaryStage.show(); } public static void main(String[] args) { launch(args); } @FXML Button trykkHerKnapp; @FXML Polygon kniv; @FXML void handleTrykkHer() { double layoutX = kniv.getLayoutX() - 10; kniv.setLayoutX(layoutX); String melding = "Bom!"; if (layoutX > 50 && layoutX < 80) { melding = "Treff!"; } trykkHerKnapp.setText(melding); } } |
...