本帖最后由 xautswfc 于 2010-08-26 11:12:35 编辑

解决方案 »

  1.   

    Point lastPoint;
    addMouseListener(new MouseAdapter(){
        @Override public mousePressed(MouseEvent e){
            if(area.contains(e.getPoint()){
                lastPoint = e.getPoint();
            }else{
                lastPoint = null;
            }
        }
    };
    addMouseMotionListener(new MouseMotionAdapter(){
        @Override public void mouseDragged(MouseEvent e){
            if(lastPoint == null) return;
            Point current = e.getPoint();
            double dx = current.getX() - lastPoint.getX();
            double dy = current.getY() - lastPoint.getY();
            AffineTransform transform = AffineTransform.getTranslateInstance(dx,dy);
            area.transform(transform);
            lastPoint = current;
            repaint();
        }
    }
    仅作参考。