0

我有一个奇怪的问题,我似乎无法解决。我有一个JList必须能够滚动的内容,如果其中有更多项目,则可以显示。但是,如果我将JLista放入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 的示例

示例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);
}

JScrollPane 示例

我想要一个JList利用BorderLayout它所在的 EAST 部分的全部可用高度。我尝试将我的JList内部包裹在另一个内部JPanel,但这也不能解决我的问题。

4

2 回答 2

1

使用 setVisibleRowCount() 方法设置 Jlist 中的可见行数。users.setVisibleRowCount(10);

于 2012-04-07T07:19:53.010 回答
0

我之前成功使用的一个技巧是将 ComponentListener 添加到 JList / JScrollPane 的父组件,并随着它的更改通过(伪代码)setPreferredSize(getPreferredSize() 重置 JList 和/或 Jscrollpane 的首选大小。宽度,父高度)

于 2012-04-04T19:32:55.100 回答