Динамическое количество видимых строк в JList - PullRequest
3 голосов
/ 27 февраля 2012

У меня есть 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. Я хочу, чтобы это значение динамически изменялось.

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Я только что обнаружил, что jList.setVisibleRowCount(0) делает его саморегулируемым при изменении размера JList.

1 голос
/ 28 февраля 2012

Повторяю комментарий @ kleopatras, не ясно, что контролирует setVisibleRowCount().В этом примере увеличивается значение Window по мере добавления строк до предопределенного предела, затем полоса прокрутки вступает во владение.Это может дать вам некоторые идеи, или вы можете использовать его в качестве основы для sscce , как подсказывает @Andrew.

Добавление: если размер JList будет контролировать счет, яначну с половины модели size().Затем добавьте одну видимую строку для каждого n , добавленного в модель, в фиксированном соотношении, которое закреплено до предварительно определенного предела.Для обеспечения надежного подсчета вам нужно будет внедрить свой собственный ListModel или переопределить мутаторы в DefaultListModel.

...