我有一个奇怪的问题,我似乎无法解决。我有一个JList
,如果有更多项目,则必须能够滚动才能显示。但是,如果我将JList
放在JScrollPane
中,它就不会使用它所在的EAST
部分的BorderLayout
部分的完整高度。
没有JScrollPane
的示例:
public UsersPanel(){
String[] userList = new String[]{"Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar"};
JList users = new JList(userList);
add(users);
}
JScrollPane
的示例:
public UsersPanel(){
String[] userList = new String[]{"Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar"};
JList users = new JList(userList);
JScrollPane sp = new JScrollPane(users);
add(sp);
}
我想要一个JList
利用BorderLayout
的EAST部分的完整可用高度。我已尝试将JList
包裹在另一个JPanel
内,但这也无法解决我的问题。
答案 0 :(得分:1)
使用setVisibleRowCount()方法设置Jlist中的可见行数。 users.setVisibleRowCount(10);
答案 1 :(得分:0)
我之前成功使用的一个hack是将ComponentListener添加到JList / JScrollPane的父组件,并且当它更改时通过(伪代码)setPreferredSize(getPreferredSize)重置JList和/或Jscrollpane的首选大小()。width,parentHeight)