import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.layout.Pane; import javafx.scene.Scene; import javafx.scene.text.Text; import javafx.scene.text.Font; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.event.*; public class GrafiskKalkulator extends Application { // Egne variabler private String visningsNummer = "0"; private Text skjermTekst; @Override public void start(Stage teater) { // Knapper class Knapp extends Button { protected String tekstligVerdi; public Knapp(String tekstligVerdi) { this.tekstligVerdi = tekstligVerdi; setText(tekstligVerdi); settStorrelse(); } public void settStorrelse(){ setPrefSize(50, 50); } public String hentTekstligVerdi() { return tekstligVerdi; } } class Tallknapp extends Knapp { public Tallknapp(int verdi) { super("" + verdi); } } class Nullknapp extends Tallknapp { public Nullknapp() { super(0); } @Override public void settStorrelse() { setPrefSize(100, 50); } } // Knappbehandlere class ResetBehandler implements EventHandler { @Override public void handle(ActionEvent e) { visningsNummer = "0"; skjermTekst.setText(visningsNummer); } } class TallknappBehandler implements EventHandler { @Override public void handle(ActionEvent e) { Tallknapp knappen = (Tallknapp)e.getSource(); System.out.println(knappen.hentTekstligVerdi()); if (visningsNummer.equals("0")) { visningsNummer = ""; } visningsNummer += knappen.hentTekstligVerdi(); skjermTekst.setText(visningsNummer); } } class OperatorBehandler implements EventHandler { @Override public void handle(ActionEvent e) { Knapp knappen = (Knapp)e.getSource(); System.out.println(knappen.hentTekstligVerdi()); } } // Masse kode skjermTekst = new Text(visningsNummer); skjermTekst.setFont(new Font(40)); skjermTekst.setY(40); skjermTekst.setX(10); // Arbeid med knapper. // Opprettelse av GridPanes GridPane alleKnapper = new GridPane(); GridPane oversteKnapper = new GridPane(); GridPane nedersteKnapper = new GridPane(); // Opprettelse av knapper Tallknapp[] tallknapper = new Tallknapp[10]; TallknappBehandler tallknappbehandler = new TallknappBehandler(); tallknapper[0] = new Nullknapp(); tallknapper[0].setOnAction(tallknappbehandler); for (int i = 1; i < 10; i++) { tallknapper[i] = new Tallknapp(i); tallknapper[i].setOnAction(tallknappbehandler); } OperatorBehandler operatorBehandler = new OperatorBehandler(); Knapp adder = new Knapp("+"); adder.setOnAction(operatorBehandler); Knapp subtraher = new Knapp("-"); subtraher.setOnAction(operatorBehandler); Knapp multipliser = new Knapp("x"); multipliser.setOnAction(operatorBehandler); Knapp erLik = new Knapp("="); erLik.setOnAction(operatorBehandler); Knapp reset = new Knapp("C"); // Opprettelse av EventHandlers ResetBehandler resetklikk = new ResetBehandler(); reset.setOnAction(resetklikk); oversteKnapper.add(tallknapper[1], 0, 0); oversteKnapper.add(tallknapper[2], 1, 0); oversteKnapper.add(tallknapper[3], 2, 0); oversteKnapper.add(adder, 3, 0); oversteKnapper.add(tallknapper[4], 0, 1); oversteKnapper.add(tallknapper[5], 1, 1); oversteKnapper.add(tallknapper[6], 2, 1); oversteKnapper.add(subtraher, 3, 1); oversteKnapper.add(tallknapper[7], 0, 2); oversteKnapper.add(tallknapper[8], 1, 2); oversteKnapper.add(tallknapper[9], 2, 2); oversteKnapper.add(multipliser, 3, 2); //oversteKnapper.add(tallknapper[0], 0, 3); nedersteKnapper.add(tallknapper[0], 0, 0); nedersteKnapper.add(reset, 1, 0); nedersteKnapper.add(erLik, 2, 0); alleKnapper.add(oversteKnapper, 0, 0); alleKnapper.add(nedersteKnapper, 0, 1); alleKnapper.setLayoutY(50); Pane kulisser = new Pane(); // Kobling mellom kulisser og masse kode. kulisser.setPrefSize(200, 250); kulisser.getChildren().add(skjermTekst); kulisser.getChildren().add(alleKnapper); // For ? vise teateret: Scene scene = new Scene(kulisser); teater.setTitle("Grafisk Kalkulator"); teater.setScene(scene); teater.show(); } public static void main(String[] args) { System.out.println("Starter v?r grafiske Kalkulator!"); Application.launch(); } }