重写你图片所在Label的paint方法,用
public void paint(Graphics g)
{
super.paint(g);
ImageIcon temp=new ImageIcon(name);
if(name.equals(""));
                  else im=temp.getImage();
                  g.drawImage(im,0,0,this.getWidth(),this.getHeight(),this);
}
name就是你的图片的名字,这样画上去比较快

解决方案 »

  1.   

    问题好像出在testLabel.setLocation(evt.getX(), evt.getY());这句上
    evt.getX()和evt.getY()数值不是连续的,而是不断跳动的啊
      

  2.   

    evt.getX()和evt.getY()只能获得鼠标事件发生时所对应的源组件即鼠标在Label里面的相对位置
    所以你要获取Label当时的相对位置,然后相加就可以了,代码如下:
    public void mouseDragged(MouseEvent evt) { 
            Object source = evt.getSource();
            if (source == testLabel) {
                testLabel.setLocation(testLabel.getX()+evt.getX(),testLabel.getY()+evt.getY());
            }
            
        }
      

  3.   

    不好意思呀.刚学JAVA..我想知道楼主的标题栏是怎么实现的.源码我读不懂.哪位能说说?
    谢谢了.
      

  4.   

    谢谢campfire11(营火)给我的提示,问题解决了:
    public void mousePressed(MouseEvent evt) {
      Object source = evt.getSource();
            if (source == testLabel) {
               mouseX = evt.getX();//得到当前鼠标的位置
               mouseY = evt.getY();//得到当前鼠标的位置
            }
    }public void mouseDragged(MouseEvent evt) { 
            Object source = evt.getSource();
            if (source == testLabel) {
                testLabel.setLocation(testLabel.getX()+(evt.getX()-mouseX),testLabel.getY()+(evt.getY()-mouseY));//evt.getX()-mouseX为了取到鼠标拖动时与原来的位置差
            }
    }
    du51(apple) ,我也是刚刚开始学呀,这段代码我是根据一个示例改动的,所以那个界面我也不是很清楚,不过估计是JFrame.setDefaultLookAndFeelDecorated(true); 这句话吧:)
    大家不要打我,还有个问题就是那个scrollPane上的滚动条在mouseDragged函数中如何设置才能使滚动条能随着图片的移动而改变他们的位置?