/************************************************** * Author: Morrison * Date: 26 Oct 202020 **************************************************/ import javafx.application.Application; import javafx.application.Platform; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.layout.BorderPane; import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import javafx.scene.control.MenuBar; import javafx.scene.paint.Color; import java.util.ArrayList; public class Coordinated extends Application { private Stage primary; private Canvas canvas; private GraphicsContext pen; private Color currentColor; private ArrayList squares; public Coordinated() { canvas = new Canvas(800,600); pen = canvas.getGraphicsContext2D(); currentColor = Color.BLACK; squares = new ArrayList<>(); } @Override public void init() { } @Override public void start(Stage primary) { this.primary = primary; BorderPane bp = new BorderPane(); bp.setCenter(canvas); bp.setTop(buildMenus()); canvas.setOnMouseClicked( e -> { Square s = new Square(currentColor, e.getX(), e.getY(), 100); squares.add(s); s.draw(pen); }); primary.setScene(new Scene(bp)); primary.show(); } private MenuBar buildMenus() { MenuBar mbar = new MenuBar(); Menu colorMenu = new Menu("Color"); mbar.getMenus().addAll(colorMenu); colorMenu.getItems().addAll( new ColorMenuItem(Color.RED, "red"), new ColorMenuItem(Color.BLUE, "blue"), new ColorMenuItem(Color.GREEN, "green"), new ColorMenuItem(Color.ORANGE, "orange") ); return mbar; } @Override public void stop() { } /********************** Aliens *************************/ class ColorMenuItem extends MenuItem { private final Color color; public ColorMenuItem(Color color, String name) { super(name); this.color = color; setOnAction( e -> { currentColor = color; }); } } }