一个简单的程序 , 右键擦除最新画的线:
class GraphPanel extends JPanel implements MouseListener, MouseMotionListener{
private static final long serialVersionUID = 5535840153326466066L;
private List lines = new LinkedList();
private Point[] line = new Point[]{new Point(), new Point()};
private boolean pressed = false;
private Point startPoint = new Point();
private Point endPoint = new Point();
public GraphPanel() {
super();
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(Point[] line : lines) {
g.drawLine(line[0].x, line[0].y, line[1].x, line[1].y);
}
g.drawLine(line[0].x, line[0].y, line[1].x, line[1].y);
}
@Override
public void mouseClicked(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON3) {
if(lines.size() > 0) {
lines.remove(lines.size() - 1);
repaint();
}
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1) {
startPoint.x = e.getX();
startPoint.y = e.getY();
line[0].x = e.getX();
line[0].y = e.getY();
line[1].x = e.getX();
line[1].y = e.getY();
}
}
@Override
public void mouseReleased(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1) {
endPoint.x = e.getX();
endPoint.y = e.getY();
lines.add(new Point[]{new Point(startPoint), new Point(endPoint)});
line[0].x = 0;
line[0].y = 0;
line[1].x = 0;
line[1].y = 0;
repaint();
}
}
@Override
public void mouseDragged(MouseEvent e) {
line[1].x = e.getX();
line[1].y = e.getY();
repaint();
}
@Override
public void mouseMoved(MouseEvent e) {
}
}