以下的panel我是放在一个frame上的。因为我现在需要根据这个panel上面放的元素多少来确定大小,比如一行放几个元素等等。用以下的代码是可以实现的。但是我把这个panel放在一个scrollpanel上面之后,有滚动条的出现。但是我拖动这个滚动条却无法往下拉,滚动条就是不往下面走。强拉到最下面松开鼠标就又弹回去了。而且界面也没跟着动。请问是怎么回事?我该怎么办呢?
JPanel panel2=new JPanel(new FlowLayout(FlowLayout.LEFT))
{   
     
  public Dimension getPreferredSize(){  
  
  JViewport viewport   =(JViewport)getParent();   
  if   (viewport!=null){   
  
  int wid=viewport.getWidth();   
  setSize(wid,100);   
  doLayout();        
  FlowLayout layout   = (FlowLayout)getLayout();   
  int   hei   =   layout.getVgap();   
for   (int   i   =   0;   i   <   getComponentCount();   i++)   {   
Component   c   =   getComponent(i);   
hei   =   Math.max(hei,   c.getY()   +   c.getHeight()   +   layout.getVgap());   
  }        
  return   new   Dimension(wid,hei);  
  }
     
  return   super.getPreferredSize(); 
  }
};

解决方案 »

  1.   

    JPanel panel2=new JPanel(new FlowLayout(FlowLayout.LEFT))

       
      public Dimension getPreferredSize(){ 
     
      JViewport viewport  =(JViewport)getParent(); 
      if  (viewport!=null){ 
     
      int wid=viewport.getWidth(); 
      setSize(wid,100); 
      doLayout();     
      FlowLayout layout  = (FlowLayout)getLayout(); 
      int  hei  =  layout.getVgap(); 
    for  (int  i  =  0;  i  <  getComponentCount();  i++)  { 
    Component  c  =  getComponent(i); 
    hei  =  Math.max(hei,  c.getY()  +  c.getHeight()  +  layout.getVgap()); 
      }     
      return  new  Dimension(wid,hei); 
      }
       
      return  super.getPreferredSize();
      }
    }
      

  2.   

    和你的layout可能有关,还有你的滚动条是滚动那个组件的,它能否被滚动