From 762ae549344e9e1a11e111a01c4dcbdf3513c9bf Mon Sep 17 00:00:00 2001 From: scrag Date: Thu, 9 Apr 2020 17:57:01 +0600 Subject: [PATCH] Lesson 8 homework done --- .../lesson8/homework/Figures/Figures.java | 10 + .../lesson8/homework/Figures/Line.java | 61 ++++++ .../lesson8/homework/Figures/Oval.java | 61 ++++++ .../lesson8/homework/Figures/Rectangle.java | 62 ++++++ src/java_core/lesson8/homework/Window.java | 176 ++++++++++++++++++ 5 files changed, 370 insertions(+) create mode 100644 src/java_core/lesson8/homework/Figures/Figures.java create mode 100644 src/java_core/lesson8/homework/Figures/Line.java create mode 100644 src/java_core/lesson8/homework/Figures/Oval.java create mode 100644 src/java_core/lesson8/homework/Figures/Rectangle.java create mode 100644 src/java_core/lesson8/homework/Window.java diff --git a/src/java_core/lesson8/homework/Figures/Figures.java b/src/java_core/lesson8/homework/Figures/Figures.java new file mode 100644 index 0000000..0dd7b49 --- /dev/null +++ b/src/java_core/lesson8/homework/Figures/Figures.java @@ -0,0 +1,10 @@ +package java_core.lesson8.homework.Figures; + +public enum Figures { + LINE, + CIRCLE, + OVAL, + SQUARE, + RECTANGLE + +} diff --git a/src/java_core/lesson8/homework/Figures/Line.java b/src/java_core/lesson8/homework/Figures/Line.java new file mode 100644 index 0000000..6ee7d98 --- /dev/null +++ b/src/java_core/lesson8/homework/Figures/Line.java @@ -0,0 +1,61 @@ +package java_core.lesson8.homework.Figures; + +import javax.swing.*; +import java.awt.*; + +public class Line extends JComponent { + int x, y, x1, y1; + + public Line(int x, int y, int x1, int y1) { + this.x = x; + this.y = y; + this.x1 = x1; + this.y1 = y1; + } + + @Override + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + @Override + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public int getX1() { + return x1; + } + + public void setX1(int x1) { + this.x1 = x1; + } + + public int getY1() { + return y1; + } + + public void setY1(int y1) { + this.y1 = y1; + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + + g2d.setColor(Color.blue); + + g2d.drawLine(this.x, this.y, this.x1, this.y1); + + + } +} diff --git a/src/java_core/lesson8/homework/Figures/Oval.java b/src/java_core/lesson8/homework/Figures/Oval.java new file mode 100644 index 0000000..9884c78 --- /dev/null +++ b/src/java_core/lesson8/homework/Figures/Oval.java @@ -0,0 +1,61 @@ +package java_core.lesson8.homework.Figures; + +import javax.swing.*; +import java.awt.*; + +public class Oval extends JComponent { + int x, y, x1, y1; + + public Oval(int x, int y, int x1, int y1) { + this.x = x; + this.y = y; + this.x1 = x1; + this.y1 = y1; + } + + @Override + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + @Override + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public int getX1() { + return x1; + } + + public void setX1(int x1) { + this.x1 = x1; + } + + public int getY1() { + return y1; + } + + public void setY1(int y1) { + this.y1 = y1; + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + + g2d.setColor(Color.blue); + + + g2d.drawOval(this.x, this.y, this.x1 - this.x, this.y1 - this.y); + + } +} diff --git a/src/java_core/lesson8/homework/Figures/Rectangle.java b/src/java_core/lesson8/homework/Figures/Rectangle.java new file mode 100644 index 0000000..4f4b2a5 --- /dev/null +++ b/src/java_core/lesson8/homework/Figures/Rectangle.java @@ -0,0 +1,62 @@ +package java_core.lesson8.homework.Figures; + +import javax.swing.*; +import java.awt.*; + +public class Rectangle extends JComponent { + int x, y, x1, y1; + + public Rectangle(int x, int y, int x1, int y1) { + this.x = x; + this.y = y; + this.x1 = x1; + this.y1 = y1; + } + + @Override + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + @Override + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public int getX1() { + return x1; + } + + public void setX1(int x1) { + this.x1 = x1; + } + + public int getY1() { + return y1; + } + + public void setY1(int y1) { + this.y1 = y1; + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + + g2d.setColor(Color.blue); + + + g2d.drawRect(this.x, this.y, this.x1 - this.x, this.y1 - this.y); + + + } +} diff --git a/src/java_core/lesson8/homework/Window.java b/src/java_core/lesson8/homework/Window.java new file mode 100644 index 0000000..9819f23 --- /dev/null +++ b/src/java_core/lesson8/homework/Window.java @@ -0,0 +1,176 @@ +package java_core.lesson8.homework; + +import java_core.lesson8.homework.Figures.Figures; +import java_core.lesson8.homework.Figures.Line; +import java_core.lesson8.homework.Figures.Oval; +import java_core.lesson8.homework.Figures.Rectangle; + +import javax.swing.*; +import java.awt.Color; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +public class Window extends JFrame { + static Figures figures = Figures.LINE; + static Point p1 = new Point(0, 0); + static Point p2 = new Point(0, 0); + static JFrame frame = new JFrame("Painter"); + static JPanel panel = new JPanel(); + static ArrayList list = new ArrayList<>(); + + public static void main(String[] args) { + //Creating the Frame + + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(500, 500); + + //Creating the MenuBar and adding components + JMenuBar mb = new JMenuBar(); + + JMenu m1 = new JMenu("Figures"); + JMenu m2 = new JMenu("Actions"); + mb.add(m1); + mb.add(m2); + //Figures menu + JMenuItem m11 = new JMenuItem("Line"); + JMenuItem m12 = new JMenuItem("Rectangle"); + JMenuItem m13 = new JMenuItem("Oval"); + m1.add(m11); + m1.add(m12); + m1.add(m13); + + //Actions menu + JMenuItem m21 = new JMenuItem("Save"); + JMenuItem m22 = new JMenuItem("Reset"); + m2.add(m21); + m2.add(m22); + + + JPanel panel = new JPanel(); // the panel is not visible in output + JLabel label = new JLabel(""); + JButton line = new JButton("Line"); + JButton rect = new JButton("Rectangle"); + JButton oval = new JButton("Oval"); + JButton save = new JButton("Save"); + JButton reset = new JButton("Reset"); + + panel.add(label); // Components Added using Flow Layout + + panel.add(line); + panel.add(oval); + panel.add(rect); + panel.add(save); + panel.add(reset); + + // Text Area at the Center + JLayeredPane jLayeredPane = new JLayeredPane(); + + //Adding Components to the frame. + frame.getContentPane().add(BorderLayout.SOUTH, panel); + frame.getContentPane().add(BorderLayout.NORTH, mb); + frame.getContentPane().add(BorderLayout.CENTER, jLayeredPane); + + jLayeredPane.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + System.out.println(e); + label.setText("x: " + e.getX() + " y: " + e.getY()); + p1.x = e.getX(); + p1.y = e.getY(); + System.out.println("p1: " + p1.toString()); + } + + @Override + public void mouseMoved(MouseEvent e) { + // super.mouseMoved(e); + System.out.println(e); + } + + @Override + public void mouseDragged(MouseEvent e) { + System.out.println(e); + } + + @Override + public void mouseReleased(MouseEvent e) { + System.out.println(e); + label.setText("x: " + e.getX() + " y: " + e.getY()); + p2.x = e.getX(); + p2.y = e.getY(); + System.out.println("p2: " + p2.toString()); + // System.out.println(list.size()); + switch (figures) { + case OVAL: + System.out.println("OVAL"); + list.add(new Oval(p1.x, p1.y, p2.x, p2.y)); + frame.getContentPane().add(BorderLayout.CENTER, new Oval(p1.x, p1.y, p2.x, p2.y)); + break; + + case RECTANGLE: + System.out.println("RECTANGLE"); + list.add(new Rectangle(p1.x, p1.y, p2.x, p2.y)); + frame.getContentPane().add(BorderLayout.CENTER, new Rectangle(p1.x, p1.y, p2.x, p2.y)); + break; + case LINE: + System.out.println("LINE"); + list.add(new Line(p1.x, p1.y, p2.x, p2.y)); + frame.getContentPane().add(BorderLayout.CENTER, new Line(p1.x, p1.y, p2.x, p2.y)); + break; + + default: + throw new IllegalStateException("Unexpected value"); + } + SwingUtilities.updateComponentTreeUI(frame); + /* for (int i = 0; i < list.size(); i++) { + * frame.getContentPane().add(BorderLayout.CENTER, list.get(i)); + }*/ + + } + + }); + + oval.addActionListener(e -> { + System.out.println("oval"); + figures = Figures.OVAL; + }); + + rect.addActionListener(e -> { + System.out.println("rect"); + figures = Figures.RECTANGLE; + + }); + + line.addActionListener(e -> { + System.out.println("line"); + figures = Figures.LINE; + }); + + reset.addActionListener(e -> { + System.out.println("reset"); + //jLayeredPane.repaint(); + //frame.getContentPane().remove(jLayeredPane); + //frame.getContentPane().add(new JLayeredPane()).setVisible(true); + //frame.getContentPane().add(jLayeredPane); + //add(BorderLayout.CENTER, jLayeredPane); + list.clear(); + //jLayeredPane.getGraphics().clearRect(0, 0, jLayeredPane.getWidth(), jLayeredPane.getHeight()); + //SwingUtilities.updateComponentTreeUI(frame); + + + }); + + save.addActionListener(e -> { + System.out.println("save"); + // jLayeredPane.setForeground(Color.yellow); + frame.setBackground(Color.orange); + SwingUtilities.updateComponentTreeUI(frame); + SwingUtilities.updateComponentTreeUI(jLayeredPane); + }); + + frame.setVisible(true); + } + + +}