import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.scene.control.ScrollPane; import javafx.event.EventHandler; import javafx.event.ActionEvent; import java.util.*; import javafx.scene.Node; public class Simon extends Application { private String trykket = "-fx-base: purple;"; private String[] hovedFarger = {"-fx-base: red;", "-fx-base: blue;","-fx-base: yellow;", "-fx-base: green;"}; private int hovedFargeTeller = 0; private int[] indekser = {1 ,-1}; private GridPane gridPane; @Override public void start(Stage teater) { VBox kulisser = new VBox(); kulisser.setPrefSize(600, 615); HBox knapper = new HBox(); leggTilKnapper(knapper); kulisser.getChildren().add(knapper); gridPane = new GridPane(); //leggTilRuter(gridPane); //ScrollPane gj?r det mulig for brukeren og scrolle neddover og bortover ScrollPane scrollPane = new ScrollPane(); scrollPane.setContent(gridPane); kulisser.getChildren().add(scrollPane); Scene scene = new Scene(kulisser); //Sett tittel p? vinduet ditt her teater.setTitle("Simon"); teater.setScene(scene); teater.show(); } public static void main(String[] args) { Application.launch(args); } //Legget til fire ruter (Ruter er en egendefinert klasse se egen fil), //i gridpanet private void leggTilRuter(GridPane gridPane){ Rute rute = new Rute(hovedFarger[0], trykket); gridPane.add(rute, 0, 0); rute = new Rute(hovedFarger[1], trykket); gridPane.add(rute, 1, 0); rute = new Rute(hovedFarger[2], trykket); gridPane.add(rute, 0, 1); rute = new Rute(hovedFarger[3], trykket); gridPane.add(rute, 1, 1); } //Legger til 3 knapper i Hbox som er ?verst private void leggTilKnapper(HBox hbox){ Button leggTil = new Button(); leggTil.setText("Legg til"); LeggTilKnappHandler leggTilHandler = new LeggTilKnappHandler(); leggTil.setOnAction(leggTilHandler); hbox.getChildren().add(leggTil); Button fjern = new Button(); fjern.setText("Fjern"); FjernKnappHandler fjernHandler = new FjernKnappHandler(); fjern.setOnAction(fjernHandler); hbox.getChildren().add(fjern); Button reset = new Button(); reset.setText("Reset"); hbox.getChildren().add(reset); } class LeggTilKnappHandler implements EventHandler{ @Override public void handle(ActionEvent e){ if(indekser[0] > 0){ indekser[0] = 0; indekser[1]++; }else{ indekser[0]++; } if(hovedFargeTeller == hovedFarger.length){ hovedFargeTeller = 0; } Rute rute = new Rute(hovedFarger[hovedFargeTeller++], trykket); RuteHandler ruteHandler = new RuteHandler(rute); rute.setOnAction(ruteHandler); gridPane.add(rute, indekser[0], indekser[1]); } } class RuteHandler implements EventHandler{ Rute rute; public RuteHandler(Rute rute){ this.rute = rute; } @Override public void handle(ActionEvent e){ rute.trykk(); } } class FjernKnappHandler implements EventHandler{ @Override public void handle(ActionEvent e){ List noder = gridPane.getChildren(); for(Node node: noder){ if(gridPane.getRowIndex(node) == indekser[1] && gridPane.getColumnIndex(node) == indekser[0]){ gridPane.getChildren().remove(node); if(indekser[0] > 0){ indekser[0]--; }else{ indekser[0]++; indekser[1]--; } } } } } }