vickey312
发贴: 8
积分: 0
|
于 2005-05-07 14:26
写出来一个程序是简单的画图,大侠们看了就知道了 但是有个小问题 怎么画后面的线的话,都会擦掉前面线的交点 恳求各位帮帮忙啊~~~ 程序如下: package c7.MouseDraw; import java.awt.*; import java.awt.event.*;
public class MouseDraw { public static void main(String[] args) { MouseFrame frame=new MouseFrame(); frame.addWindowListener(new Wadapt()); frame.setVisible(true); } }
class MouseFrame extends Frame { public MouseFrame() { setTitle("利用鼠标绘图"); setSize(300,300); MousePanel panel=new MousePanel(); add(panel); } }
class MousePanel extends Panel implements MouseListener,MouseMotionListener { private int x,y,start_X,start_Y,old_X,old_Y; private boolean draw; public MousePanel() { addMouseListener(this); addMouseMotionListener(this); }
public void mousePressed(MouseEvent evt) { start_X=evt.getX(); start_Y=evt.getY(); draw=false; } public void mouseReleased(MouseEvent evt){} public void mouseClicked(MouseEvent evt){}
public void mouseEntered(MouseEvent evt) { setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); }
public void mouseExited(MouseEvent evt) { setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); }
public void mouseDragged(MouseEvent evt) { x=evt.getX(); y=evt.getY(); repaint(); }
public void mouseMoved(MouseEvent evt){} public void update(Graphics g) { paint; } public void paint(Graphics g) { if(!draw) { old_X=x; old_Y=y; draw=true; } else { g.setColor(getBackground()); g.drawLine(start_X,start_Y,old_X,old_Y); old_X=x; old_Y=y; } g.setColor(getForeground()); g.drawLine(start_X,start_Y,x,y); } }
class Wadapt extends WindowAdapter { public void windowClosing(WindowEvent evt) { Frame frm=(Frame)evt.getSource(); frm.setVisible(false); frm.dispose(); System.exit(0); } }
|