I updated it to make the lines smooth
Code
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Paint {
public static Color currentColor = Color.RED;
public static void main( String[] a ) {
final DrawingFrame f = new DrawingFrame( );
f.setTitle( "Paint" );
f.setBounds( 0, 0, 750, 500 );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
JPanel panel = new JPanel( );
panel.setBackground( Color.WHITE );
f.add( panel );
JButton btnRed = new JButton( "Red" );
btnRed.setBackground( Color.RED );
btnRed.addActionListener( new ActionListener( ) {
@Override
public void actionPerformed( ActionEvent arg0 ) {
currentColor = Color.RED;
}
} );
panel.add( btnRed );
JButton btnBlue = new JButton( "Blue" );
btnBlue.setBackground( Color.BLUE );
btnBlue.addActionListener( new ActionListener( ) {
@Override
public void actionPerformed( ActionEvent arg0 ) {
currentColor = Color.BLUE;
}
} );
panel.add( btnBlue );
JButton btnGreen = new JButton( "Green" );
btnGreen.setBackground( Color.GREEN );
btnGreen.addActionListener( new ActionListener( ) {
@Override
public void actionPerformed( ActionEvent arg0 ) {
currentColor = Color.GREEN;
}
} );
panel.add( btnGreen );
btnGreen.setVisible( true );
JButton btnClear = new JButton( "Clear" );
btnClear.addActionListener( new ActionListener( ) {
@Override
public void actionPerformed( ActionEvent arg0 ) {
f.getGraphics( ).clearRect( 0, 0, 750, 500 );
f.repaint( );
}
} );
panel.add( btnClear );
f.setVisible( true );
}
static class DrawingFrame extends JFrame {
int lastX;
int lastY;
public DrawingFrame( ) {
addMouseMotionListener( new MouseMotionListener( ) {
@Override
public void mouseDragged( MouseEvent e ) {
Graphics g = getGraphics( );
g.setColor( currentColor );
g.drawLine( lastX, lastY, e.getX( ), e.getY( ) );
lastX = e.getX( );
lastY = e.getY( );
}
@Override
public void mouseMoved( MouseEvent e ) {
lastX = e.getX( );
lastY = e.getY( );
}
} );
}
}
}
This post was edited by labatymo on Apr 16 2013 07:35am