este si te ayudaria bastante..
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.event.*;
public class FreeHand
extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
public FreeHand()
{
}
protected void paintComponent
(Graphics g
) {
super.paintComponent(g);
if(image == null)
initImage();
g.drawImage(image, 0, 0, this);
}
{
g2.setPaint(color);
g2.setStroke(stroke);
g2.dispose();
repaint();
}
private void clearImage()
{
g.setColor(getBackground());
g.fillRect(0, 0, image.getWidth(), image.getHeight());
g.dispose();
repaint();
}
private void initImage()
{
int w = getWidth();
int h = getHeight();
g2.setPaint(getBackground());
g2.fillRect(0,0,w,h);
g2.dispose();
}
private JPanel getColorPanel
() {
};
{
{
color = button.getBackground();
}
};
for(int j = 0; j < colors.length; j++)
{
button.setFocusPainted(false);
button.setBackground(colors[j]);
button.addActionListener(l);
panel.add(button);
}
return panel;
}
private JPanel getControlPanel
() {
{
{
clearImage();
}
});
{
{
float value
= ((Integer)slider.
getValue()).
floatValue(); }
});
panel.
add(new JLabel("stroke")); panel.add(slider);
panel.add(clear);
return panel;
}
public static void main
(String[] args
) {
FreeHand freeHand = new FreeHand();
DrawingListener listener = new DrawingListener(freeHand);
freeHand.addMouseListener(listener);
freeHand.addMouseMotionListener(listener);
f.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE); f.getContentPane().add(freeHand.getColorPanel(), "North");
f.getContentPane().add(freeHand);
f.getContentPane().add(freeHand.getControlPanel(), "South");
f.setSize(400,400);
f.setLocation(200,200);
f.setVisible(true);
}
}
{
FreeHand freeHand;
public DrawingListener(FreeHand fh)
{
this.freeHand = fh;
}
{
start = e.getPoint();
}
{
freeHand.draw(start, p);
start = p;
}
}