3

とともにサイズが大きくなるJListがありJFrameます。私は次のコードを持っています:

defaultListModel = new DefaultListModel<SData>();
for (String string: listOfStrings) {
    defaultListModel.addElement(string);
}
jList = new JList<String>(defaultListModel);
jList.setCellRenderer(jListCellRenderer);
jList.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent arg0) {
        //codes to go
    }
});
jList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jList.setLayoutOrientation(JList.VERTICAL_WRAP);
scrollPane = new JScrollPane(jList);

setVisibleRowCountメソッドに値を設定すると、行番号が固定され、値を設定しないと、デフォルト値の8が再生されます。この値を動的に変化させたい。

4

2 に答える 2

4

jList.setVisibleRowCount(0)JListのサイズを変更すると、自己調整可能になることがわかりました。

于 2012-03-01T06:42:00.330 に答える
1

@kleopatrasのコメントを反映して、何が制御するかは明確ではありませんsetVisibleRowCount()。このでは、行が追加されると、事前定義された制限まで囲みが大きくなりWindow、スクロールバーが引き継ぎます。それはあなたにいくつかのアイデアを与えるかもしれません、あるいはあなたは@Andrewが提案するようにあなたのsscceの基礎としてそれを使うことができます。

補遺:のサイズがJListカウントを制御する場合、モデルの半分から始めsize()ます。次に、モデルに追加されたnごとに1つの表示行を、事前定義された制限に固定された固定比率で追加します。信頼できるカウントを維持するには、独自のミューテーターを実装するListModelか、のミューテーターをオーバーライドする必要がありますDefaultListModel

于 2012-02-28T04:14:03.020 に答える