【问题标题】:JList in JScrollPane messes up JPanel heightJScrollPane 中的 JList 弄乱了 JPanel 的高度
【发布时间】:2012-04-04 19:25:18
【问题描述】:

我有一个似乎无法解决的奇怪问题。我有一个JList,如果其中有更多项目,它必须能够滚动,然后才能显示。但是,如果我将JList 放在JScrollPane 中,它不会利用BorderLayout 所在的EAST 部分的全部高度。

没有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 中,但这并不能解决我的问题要么。

【问题讨论】:

    标签: height jpanel jscrollpane jlist border-layout


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我之前成功使用的一个技巧是将 ComponentListener 添加到 JList / JScrollPane 的父组件,并在更改时通过(伪代码)setPreferredSize(getPreferredSize) 重置 JList 和/或 Jscrollpane 的首选大小().width, parentHeight)

      【讨论】:

        猜你喜欢
        • 2015-09-18
        • 1970-01-01
        • 2020-07-01
        • 2017-08-23
        • 2016-01-02
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 2019-02-01
        相关资源
        最近更新 更多