我想在JPanel里放一个带有滚动条的JList,再把JPanel放到Container里 。但是设置上滚动条后 JList就显示不出来了,不加滚动条能够显示。我的代码:public class TestList extends JFrame implements ListSelectionListener {
JTextArea jta;
JList list;
JPanel jp;
String[] address = {"北京","天津","沈阳","上海","葫芦岛","大连","成都","北京","天津","沈阳","上海","葫芦岛","大连","成都","北京","天津","沈阳","上海","葫芦岛","大连","成都"};

public void list() {
jta = new JTextArea(10,30);
list = new JList(address);
jp = new JPanel();
jp.setLayout(null);
list.setBounds(60, 50, 300, 190);
jp.add(new JScrollPane(list));
Container con = this.getContentPane();
con.add(jta,BorderLayout.NORTH);
con.add(jp,BorderLayout.CENTER);
list.addListSelectionListener(this);
setDefaultCloseOperation(3);
setSize(500,500);
setVisible(true);
}
请帮忙改一下。

解决方案 »

  1.   

    那 在jpanel上不能放JScrollPanel 吗 ?因为我在Jpanel上还有其他的组件,这些组件中只有JList需要滚动条
      

  2.   

    JScrollPane的size你不设置的话是(0,0),在没布局管理的情况下肯定是看不到的。你可以试着这样做:
    jta = new JTextArea(10,30);
            list = new JList(address);
            jp = new JPanel();
            jp.setLayout(null);
            list.setBounds(60, 50, 300, 190);
            JScrollPane pane = new JScrollPane();
            pane.setSize(new Dimension(70, 200));//手动设置为指定值。
            pane.setViewportView(list);
            jp.add(pane);
            Container con = this.getContentPane();
            con.add(jta,BorderLayout.NORTH);
            con.add(jp,BorderLayout.CENTER);
            list.addListSelectionListener(this);
            setDefaultCloseOperation(3);
            setSize(500,500);
            setVisible(true);最后问一下,你重写JFrame的list()方法来初始化是为什么?
    我很费解!