我在 用 swing 开发桌面程序时候,我的 java 类已经实现 MouseInputListener接口
而且重写了mouseDragged(MouseEvent e)方法,但我发现,在鼠标移动的时候,没有触发此事件,为什么哦?

解决方案 »

  1.   

    mouseDragged(MouseEvent e) 这个事件是鼠标拖拽事件,不是鼠标移动事件
    鼠标移动用  mouseMoved(MouseEvent e)
      

  2.   

    看下代码,具体方法已经被我省略了
    当我用鼠标在面板上画直线 的时候,鼠标肯定会移动的,虽然最终直线是画成功了,但有些不对
    通过System.out.println()打印结果来看
    mousePressed,mouseReleased事件都执行了,唯独鼠标拖拽事件mouseDragged没有执行,请求帮助
    public class PainterPanel extends JPanel implements MouseInputListener{
    int shape = -1; // 图案类型
    Point point[] = new Point[2]; // 记录鼠标拖动的起始点和终点
    Image imgP = null;
    Label bar = null;
    int angle = 0;  //角度
    private List list = new ArrayList();//集合
    int width=0;
    int height=0;
    // boolean flag = true;
    public Label getBar() {
    return bar;
    }
    public void setBar(Label bar) {
    this.bar = bar;
    }
    public PainterPanel(Image img) {
    // super();

    } // 重写绘制图像方法
    public void paintComponent(Graphics g) {
    // System.out.println("paintComponent");

    } public void mouseEntered(MouseEvent e) {
    } public void mouseExited(MouseEvent e) {
    } public void mouseClicked(MouseEvent e) {
    } public void mousePressed(MouseEvent e) // 鼠标按下时事件
    {
    System.out.println("mousePressed");
    point[0] = new Point(e.getX(), e.getY()); // 设置起始点位置
    String desc = "現在位置:x=" + e.getX() + " y=" + e.getY();

    } public void mouseDragged(MouseEvent e) { // 移動過程中事件

    System.out.println("mouseDragged");
    point[1] = new Point(e.getX(), e.getY()); // 设置终点位置
    repaint(); // 重绘屏幕

    } public void mouseReleased(MouseEvent e)// 鼠标释放事件
    {
    System.out.println("mouseReleased");
    point[1] = new Point(e.getX(), e.getY()); // 设置终点位置
    repaint(); // 重绘屏幕

    } public void paint(Graphics g) {
    super.paint(g);
    //System.out.println("paint");

    } public void drawShape(int shape) {

    }
    public void mouseMoved(MouseEvent e) {
    // TODO Auto-generated method stub

    }
    }
      

  3.   

    ok,搞定,原来没有加
    addMouseMotionListener(this);