p2.add(new JScrollPane(listUp),BorderLayout.NORTH);
===>
  p2.add(new JScrollPane(listUp),BorderLayout.CENTER);

解决方案 »

  1.   

    呵呵,刚找到原因,helpall已经回答了。
      

  2.   

    是阿,我记得我当时好像也试过这个方法的,但是还是不行。
    ======>当时还是不行? 现在还是不行?原因猜测应该是BorderLayout自身的问题,浪费你这么多的时间.
      

  3.   

    问题出在这两行
    p2.add(new JScrollPane(listUp),BorderLayout.NORTH)
    p2.add(p4,BorderLayout.SOUTH);
    只要让List用Center布局就可以了,原因是List在加入后有PreferredSize,当布局是非Center时,会使用这个Size,而是Center时,则不会。
    Label在重设内容后会导致重新布局,因此会让List覆盖了Label,其实只要将Frame拖大一些就可以看出来了。
      

  4.   

    但是为什么用listUp.setPreferredSize(...)也解决不了问题呢?
      

  5.   

    现在可以了。
    但是以前不行,是不是因为以下的一些原因?
    原来:contentPane.setLayout(new BorderLayout(10,10));
    现在:contentPane.setLayout(new BorderLayout(20,20));
    原来:addf.pack();
    现在:addf.setSize(450,270);
    原来:p2.add(p4);
    现在:p2.add(p4,BorderLayout.SOUTH);

      

  6.   

    如果你的布局是不变的话,建议你用JB的XYLayout.很简单,没有这么多头疼的事.
      

  7.   

    哦,我是用ultraedit写的,谢谢你的建议。