0

解決できないような奇妙な問題があります。JList表示できるアイテムがさらにある場合は、スクロールできる必要があります。ただし、 を に入れるとJList、その部分のJScrollPane高さ全体が利用されません。EASTBorderLayout

なしの例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の EAST 部分の利用可能な高さをすべて利用する が必要です。別の の内側にBorderLayoutラップしようとしましたが、それでも問題は解決しません。JListJPanel

4

2 に答える 2

1

setVisibleRowCount()メソッドを使用して、Jlistに表示される行の数を設定します。users.setVisibleRowCount(10);

于 2012-04-07T07:19:53.010 に答える
0

私が以前に成功裏に使用したハックの 1 つは、ComponentListener を JList / JScrollPane の親コンポーネントに追加し、それが変更されると、(疑似コード) setPreferredSize(getPreferredSize()) を介して JList および/または Jscrollpane の優先サイズをリセットすることです。幅、親の高さ)

于 2012-04-04T19:32:55.100 に答える