如何在JPanel上添加带有滚动条的JList组件?

时间:2021-11-28 20:04:18
我想在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);
}
请帮忙改一下。

3 个解决方案

#1


引用楼主 sy4722 的帖子:
我想在JPanel里放一个带有滚动条的JList,再把JPanel放到Container里 。但是设置上滚动条后 JList就显示不出来了,不加滚动条能够显示。我的代码: 

public class TestList extends JFrame implements ListSelectionListener { 
JTextArea jta; 
JList list; 
JPanel jp;  //你用JScrollPanel就行了
String[] address = {"北京","天津","沈阳","上海","葫芦岛","大连","成都","北京","天津","沈阳","上海","葫芦岛","大连","成都","北京","天津","沈…

#2


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

#3


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()方法来初始化是为什么?
我很费解!

#1


引用楼主 sy4722 的帖子:
我想在JPanel里放一个带有滚动条的JList,再把JPanel放到Container里 。但是设置上滚动条后 JList就显示不出来了,不加滚动条能够显示。我的代码: 

public class TestList extends JFrame implements ListSelectionListener { 
JTextArea jta; 
JList list; 
JPanel jp;  //你用JScrollPanel就行了
String[] address = {"北京","天津","沈阳","上海","葫芦岛","大连","成都","北京","天津","沈阳","上海","葫芦岛","大连","成都","北京","天津","沈…

#2


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

#3


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()方法来初始化是为什么?
我很费解!