// <applet code="PainterApplet" width="400" height="400"></applet>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.MouseInputAdapter;
public class PainterApplet extends JApplet implements ActionListener {
PainterPanel painterPanel = new PainterPanel();
public void init() {
painterPanel.addMouseListener(mia);
painterPanel.addMouseMotionListener(mia);
getContentPane().add(painterPanel);
getContentPane().add(getButtonPanel(), "Last");
}
private JPanel getButtonPanel() {
Color[] colors = { Color.red, Color.green.darker(), Color.blue };
JPanel panel = new JPanel(new GridLayout(1,0));
panel.setPreferredSize(new Dimension(100,30));
for(int j = 0; j < colors.length; j++) {
JButton button = new JButton();
button.setBackground(colors[j]);
button.addActionListener(this);
panel.add(button);
}
return panel;
}
public void actionPerformed(ActionEvent e) {
JButton button = (JButton)e.getSource();
painterPanel.setColor(button.getBackground());
}
private class PainterPanel extends JPanel {
private int x = 0, y = 0, w = 0, h = 0;
Color color = Color.black;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Drag the mouse to draw",10,20);
g.setColor(color);
g.fillOval(x, y, w, h);
}
public void setColor(Color color) {
this.color = color;
repaint();
}
public void setOval(Point start, Point end) {
x = (end.x > start.x) ? start.x : end.x;
y = (end.y > start.y) ? start.y : end.y;
w = end.x - start.x;
h = end.y - start.y;
if(w < 0) w *= -1;
if(h < 0) h *= -1;
repaint();
}
}
private MouseInputAdapter mia = new MouseInputAdapter() {
Point start;
public void mousePressed(MouseEvent e) {
start = e.getPoint();
}
public void mouseDragged(MouseEvent e) {
painterPanel.setOval(start, e.getPoint());
}
};
}