主程序中:
                        addMouseListener(new mouseOperate());
                        addMouseMotionListener(new mouseOperate()); class mouseOperate extends MouseAdapter implements MouseMotionListener
{
public void mouseDragged(MouseEvent e)
{
// setVisible(true);
repaint();
}
public void mouseMoved(MouseEvent e)
{
}
                public void mousePressed(MouseEvent e)
                {
                 sx=e.getX();
                 sy=e.getY();
                }
                public void mouseReleased(MouseEvent e)
                {
                 fx=e.getX();
                 fy=e.getY();
                 repaint();
                }
}
}
但是这个程序在画图时无法显示鼠标移动轨迹,希望大家能帮着解决一下,谢谢!

解决方案 »

  1.   

    在drg那里写Point p = new Point(x,y);
    然后把记录下来的点在paint方法里做一个循环随便画就是了。唯一要注意的就是要搞清楚repanit,update,paint三个方法的调用顺序。
      

  2.   

    如果你是在JPanel的paintComponent中画的话, 呵呵, 比较麻烦(因为是双缓冲的), 不过可以先画在BufferedImage上, 然后再画到屏幕上.
      

  3.   

    简单地给你说说,今天心情好,呵呵,其实很简单:import java.awt.*;
    import java.awt.Graphics2D;
    import java.awt.event.*;
    import javax.swing.*;public class Test extends JPanel implements MouseListener, MouseMotionListener {    private Polygon m_polygon;
        private int m_beginX,  m_beginY;
        private boolean m_mousePressing = false;    public Test() {
            super();
            setPreferredSize(new Dimension(640, 640));
            addMouseListener(this);
            addMouseMotionListener(this);
        }    @Override
        public void paintComponent(Graphics g) {
            Graphics2D g2d = (Graphics2D) g;
            if (m_mousePressing) {
                g2d.drawPolyline(m_polygon.xpoints, m_polygon.ypoints, m_polygon.npoints);
            }    }    public void mouseClicked(MouseEvent e) {    }    public void mousePressed(MouseEvent e) {
            m_beginX = e.getX();
            m_beginY = e.getY();
            m_mousePressing = true;
            m_polygon = new Polygon();
            m_polygon.addPoint(m_beginX, m_beginY);
        }    public void mouseReleased(MouseEvent e) {
            m_mousePressing = false;
        }    public void mouseEntered(MouseEvent e) {    }    public void mouseExited(MouseEvent e) {    }    public void mouseDragged(MouseEvent e) {
            int currentX = e.getX();
            int currentY = e.getY();
            m_polygon.addPoint(currentX, currentY);
            repaint();
        }    public void mouseMoved(MouseEvent e) {    }
    }---------------
    如果将mouseDragged的代码放到mouseMoved又是另一种效果,呵呵 
      

  4.   

    楼上:如果将mouseDragged的代码放到mouseMoved又是另一种效果.他报错的......