本帖最后由 sknice 于 2012-04-18 11:18:42 编辑

解决方案 »

  1.   

    没有直接的实现。
    在move事件中,检查图片位置与边界的关系,然后主动调用JScrollBar来操作滚动。
      

  2.   

    大概意思我也知道,只是调用JScrollBar设置新的值得时候不知道设置多少合适。
      

  3.   

    JViewport viewport = JScrollPanel.getViewport();
    viewport.scrollRectToVisible(Rectangle rect); //滚动,使矩形rect处于可见范围内
      

  4.   

    你只需要计算出rect就可以了,实际上rect应该就是你所拖动的图片的边界
      

  5.   

    看这个帖子
    http://topic.csdn.net/u/20120201/15/2c9ea68e-c0ee-45e5-b9c6-c3e515a3e27f.html
      

  6.   


    @Override
    public void myScrollEvent(myScrollEvent event)
    {
    int y=event.getValue();
    JViewport viewport = scrollPane.getViewport();
    Rectangle baserect=viewport.getViewRect();
    int startY=baserect.y;
                    //向上滚动没有效果
    if(y < startY)
    {
    Rectangle rect =new  Rectangle(0,0,(int)baserect.getWidth(),(int) baserect.getHeight());
        viewport.scrollRectToVisible(rect); 
    }
                   //向下滚动可以滚动
    else if(y >startY+baserect.getHeight())
    {
        
        Rectangle rect =new  Rectangle(0,(int) (y-baserect.getHeight()-startY),(int)baserect.getWidth(),(int) baserect.getHeight());
    viewport.scrollRectToVisible(rect); 
    }

    }