滚动条是根据JPanel的初始大小来确定出现与否。你要做的事是动态改变JPanel的大小。

解决方案 »

  1.   

    用setPreferedSize()设置JPanel大小,不要用setSize()
      

  2.   

    建议你最好不要吧awt和swing的组件一起来用,这样有一些问题你想也想不到的。还有你的代码写的怎么这么难看呀,一句话的事写了这么多:JScrollPane scroller = new JScrollPane();
    JViewport port = scroller.getViewport();
    port.add(editor);
    port.setScrollMode(1);
    完全可以用
    JScrollPane  scroller = new JScrollPane(editor);
    一句替换吗
      

  3.   

    to 楼上几位:
    我是用setPerferredSize()来动态的改变JPanel的大小,
    但必须手动改变一下窗口大小,jscroll才改变其滚动范围。
    如在mouseClicked方法中加入:
    editor.setPreferredSize(new Dimension(1000,1000));请问:如何才能让其自动根据jpanel的范围改变而改变?
      

  4.   

    问题解决,不想多说方法了,有兴趣看下面代码吧。int w = ((ls.getX()-incx)>editor.getPreferredSize().width) ? ls.getX()-incx+55 : editor.getPreferredSize().width;int h = ((ls.getY()-incy)>editor.getPreferredSize().height) ? ls.getY()-incy+20 : editor.getPreferredSize().height;Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);
    editor.setPreferredSize(new Dimension(w,h));
    editor.scrollRectToVisible(r);