Sie sind auf Seite 1von 3

import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import java.util.*; import javax.swing.

*; public class DrawShapes extends JApplet implements ActionListener { public static void main(String s[]) { JFrame frame = new JFrame(); frame.setTitle("Drawing Geometric Shapes"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DrawShapes applet = new DrawShapes(); applet.init(); frame.getContentPane().add(applet); frame.pack(); frame.setVisible(true); } lingkaranPanel panel = null; public void init() { JMenuBar mb = new JMenuBar(); setJMenuBar(mb); JMenu menu = new JMenu("Objects"); mb.add(menu); JMenuItem mi = new JMenuItem("Kotak"); mi.addActionListener(this); menu.add(mi); mi = new JMenuItem("Bulat"); mi.addActionListener(this); menu.add(mi);

panel = new lingkaranPanel(); getContentPane().add(panel); } public void actionPerformed(ActionEvent ev) { String command = ev.getActionCommand(); if ("Bulat".equals(command)) { panel.shapeType = panel.ROUNDRECTANGLE2D; } else if ("Kotak".equals(command)) { panel.shapeType = panel.RECTANGLE; }

} class lingkaranPanel extends JPanel implements Runnable, MouseListener{ private Vector shapes = new Vector(); static final int RECTANGLE = 2; static final int ROUNDRECTANGLE2D = 1; static final int ROUND = 3 ; static final int RED = 10; static final int GREEN = 11; static final int kosong = 13;

int shapeType = ROUND ; int colorType = RED;

// vector of input points Vector points = new Vector(); int pointIndex = 0; Shape partialShape = null; Point p = null; int x ,y, a, b;int step=10; public lingkaranPanel() { super () ; setPreferredSize(new Dimension(640, 480)); addMouseListener(this); setBackground(Color.gray); Thread thread = new Thread(this); thread.start();

MouseListener mouseListener = new MouseAdapter() { public void mouseClicked(MouseEvent ev) { Graphics g = getGraphics(); Point p1 = (Point)(points.get(pointIndex-1)); p = ev.getPoint(); Shape s = null; switch (shapeType) { case RECTANGLE: s = new Rectangle(a, b, 20, 20); break; case ROUNDRECTANGLE2D: s = new Ellipse2D.Float(a, b, 20, 20); case kosong : break; } if (s != null) { shapes.add(s); points.clear(); pointIndex = 0; p = null; repaint(); } a = ev.getX(); b = ev.getY(); repaint(); } }; addMouseListener(mouseListener); } public void paintComponent(Graphics g) { super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g; switch(colorType){ case RED: g2.setColor(Color.red);break; case GREEN: g2.setColor(Color.green);break; } switch (shapeType) { case ROUNDRECTANGLE2D : g.drawOval(a, x, 20, 20); break ; case RECTANGLE: g.drawRect(a, x, 20, 20); break ; case kosong : ; } for (int i = 0; i < shapes.size(); i++) { Shape s = (Shape)shapes.get(i); g2.draw(s); } } public void mouseClicked(MouseEvent ev) { } public void mouseEntered(MouseEvent ev) { } public void mouseExited(MouseEvent ev) { } public void mousePressed(MouseEvent ev) { points.add(ev.getPoint()); pointIndex++; p = null; } public void mouseReleased(MouseEvent ev) { } public void mouseMoved(MouseEvent ev) { } public void run() { while(true) { if(y<0 ) step=-step; x+=step; repaint(); try { Thread.sleep(100); } catch (InterruptedException ex) {} } }

} }

Das könnte Ihnen auch gefallen