From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/examples/Listing2904.java | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/examples/Listing2904.java (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/Listing2904.java') diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/Listing2904.java b/Master/Reference Architectures and Patterns/hjp5/examples/Listing2904.java new file mode 100644 index 0000000..5bea4ee --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/examples/Listing2904.java @@ -0,0 +1,92 @@ +/* Listing2904.java */ + +import java.awt.*; +import java.awt.event.*; +import java.util.*; + +public class Listing2904 +extends Frame +{ + private Vector drawlist; + private Rectangle actrect; + + public static void main(String[] args) + { + Listing2904 wnd = new Listing2904(); + wnd.setLocation(200,200); + wnd.setSize(400,300); + wnd.setVisible(true); + } + + public Listing2904() + { + super("Rechtecke zeichnen"); + drawlist = new Vector(); + actrect = new Rectangle(0,0,0,0); + addWindowListener(new MyWindowListener()); + addMouseListener(new MyMouseListener()); + addMouseMotionListener(new MyMouseMotionListener()); + } + + public void paint(Graphics g) + { + Rectangle r; + Enumeration e; + + for (e = drawlist.elements(); e.hasMoreElements(); ) { + r = (Rectangle)e.nextElement(); + g.drawRect(r.x, r.y, r.width, r.height); + } + if (actrect.x > 0 || actrect.y > 0) { + g.drawRect( + actrect.x, + actrect.y, + actrect.width, + actrect.height + ); + } + } + + class MyMouseListener + extends MouseAdapter + { + public void mousePressed(MouseEvent event) + { + actrect = new Rectangle(event.getX(),event.getY(),0,0); + } + + public void mouseReleased(MouseEvent event) + { + if (actrect.width > 0 || actrect.height > 0) { + drawlist.addElement(actrect); + } + repaint(); + } + } + + class MyMouseMotionListener + extends MouseMotionAdapter + { + public void mouseDragged(MouseEvent event) + { + int x = event.getX(); + int y = event.getY(); + if (x > actrect.x && y > actrect.y) { + actrect.width = x - actrect.x; + actrect.height = y - actrect.y; + } + repaint(); + } + } + + class MyWindowListener + extends WindowAdapter + { + public void windowClosing(WindowEvent event) + { + setVisible(false); + dispose(); + System.exit(0); + } + } +} \ No newline at end of file -- cgit v1.2.3