import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class SimpleDraw extends JFrame
implements ActionListener, MouseListener {
// (x1,y1) = coordinate of mouse pressed
// (x2,y2) = coordinate of mouse released
int x1;
int y1;
int x2;
int y2;
ArrayList shapes = new ArrayList();
String shapeType = "Rectangle";
public SimpleDraw() {
this.setTitle("Simple DRAW");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// add check box group
ButtonGroup cbg = new ButtonGroup();
JRadioButton lineButton = new JRadioButton("Line");
JRadioButton ovalButton = new JRadioButton("Oval");
JRadioButton rectangleButton =
new JRadioButton("Rectangle");
cbg.add(lineButton);
cbg.add(ovalButton);
cbg.add(rectangleButton);
lineButton.addActionListener(this);
ovalButton.addActionListener(this);
rectangleButton.addActionListener(this);
rectangleButton.setSelected(true);
JPanel radioPanel = new JPanel(new FlowLayout());
radioPanel.add(lineButton);
radioPanel.add(ovalButton);
radioPanel.add(rectangleButton);
this.addMouseListener(this);
this.setLayout(new BorderLayout());
this.add(radioPanel, BorderLayout.NORTH);
}
public void paint(Graphics g) {
paintComponents(g);
for (Shape shape : shapes) {
Graphics2D g2 = (Graphics2D)g;
g2.draw(shape);
}
}
public void actionPerformed(ActionEvent ae) {
shapeType = ae.getActionCommand().toString();
}
public void mouseClicked(MouseEvent me) {
}
public void mouseEntered(MouseEvent me) {
}
public void mouseExited(MouseEvent me) {
}
public void mousePressed(MouseEvent me) {
x1 = me.getX();
y1 = me.getY();
}
public void mouseReleased(MouseEvent me) {
x2 = me.getX();
y2 = me.getY();
Shape shape = null;
if (shapeType.equals("Rectangle")) {
// a Rectangle cannot have a zero width or height
if (x1 != x2 || y1 != y2) {
shape = new Rectangle(x1, y1, x2, y2);
}
}
if (shape != null) {
this.shapes.add(shape);
this.repaint();
}
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
SimpleDraw frame = new SimpleDraw();
frame.pack();
frame.setVisible(true);
}
}