/************************************************** * Author: Morrison * Date: 09 Mar 2022 **************************************************/ import javafx.application.Application; import javafx.application.Platform; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; public class Draw extends Application { private Stage primary; private Color currentColor; private double currentSize; private Canvas canvas; public Draw() { this.currentColor = Color.BLACK; this.currentSize = 50; canvas = new Canvas(800, 500); } @Override public void init() { } @Override public void start(Stage primary) { this.primary = primary; BorderPane bp = new BorderPane(); bp.setCenter(canvas); bp.setTop(buildMenus()); primary.setScene(new Scene(bp)); GraphicsContext pen = canvas.getGraphicsContext2D(); pen.setFill(Color.RED); pen.fillRect(0,0,100,100); pen.setStroke(Color.BLUE); pen.strokeRect(200,200,50,50); pen.setFill(Color.GREEN); pen.fillOval(300,300, 100, 50); canvas.setOnMouseClicked( e -> { pen.setFill(currentColor); pen.fillRect(e.getX() - currentSize/2, e.getY() - currentSize/2, currentSize, currentSize); }); primary.show(); } private MenuBar buildMenus() { MenuBar mbar = new MenuBar(); Menu fileMenu = new Menu("File"); Menu colorMenu = new Menu("Color"); Menu sizeMenu = new Menu("Size"); mbar.getMenus().addAll(fileMenu, colorMenu, sizeMenu); colorMenu.getItems().add(new ColorMenuItem("Red", Color.RED)); colorMenu.getItems().add(new ColorMenuItem("Blue", Color.BLUE)); colorMenu.getItems().add(new ColorMenuItem("Green", Color.GREEN)); colorMenu.getItems().add(new ColorMenuItem("Yellow", Color.YELLOW)); colorMenu.getItems().add(new ColorMenuItem("Dookbloo", Color.valueOf("#001A57"))); sizeMenu.getItems().add(new SizeMenuItem(20)); sizeMenu.getItems().add(new SizeMenuItem(50)); sizeMenu.getItems().add(new SizeMenuItem(100)); sizeMenu.getItems().add(new SizeMenuItem(200)); MenuItem quitItem = new MenuItem("Quit"); quitItem.setOnAction(e -> Platform.exit()); MenuItem clearItem = new MenuItem("Clear"); clearItem.setOnAction( e -> { pen.clearRect(0, 0, }); fileMenu.getItems().addAll(clearItem, quitItem); return mbar; } @Override public void stop() { } /******************* Aliens ********************/ class ColorMenuItem extends MenuItem { Color color; public ColorMenuItem(String name, Color color) { super(name); this.color = color; setOnAction( e -> { currentColor = color; }); } } class SizeMenuItem extends MenuItem { double size; public SizeMenuItem(double size) { super("" + size); this.size = size; setOnAction( e -> { currentSize = size; }); } } }