JList алфавитный порядок - PullRequest
4 голосов
/ 05 апреля 2011

У меня есть следующее демонстрационное приложение, которое отображает список значений, но мне нужно иметь возможность контролировать порядок элементов в списке. Какой самый простой способ добавить это?

package demo;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListModel;

public class JListOrder {

    public JListOrder()
    {
        JFrame frame = new JFrame("JListOrder");

        DefaultListModel model = new DefaultListModel();
        model.addElement("z");
        model.addElement("Z");
        model.addElement("a");
        model.addElement("A");
        model.addElement("C");
        model.addElement("c");
        model.addElement("b");
        model.addElement("B");

        JList list = new JList(model);
        frame.add(list);
        frame.setSize(200,200);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new JListOrder();
    }
}

Ответы [ 5 ]

7 голосов
/ 05 апреля 2011

Самый простой способ - использовать SwingX, который поддерживает сортировку / фильтрацию JXList так же, как сортировку / фильтрацию базовой таблицы:

JXList list = new JXList(model);
list.setAutoCreateRowSorter(true);
list.toggleSortOrder();
3 голосов
/ 05 апреля 2011

Если вы имеете в виду, что вам нужно контролировать порядок его элементов во время выполнения, в то время как его элементы меняются, то вам, вероятно, нужно реализовать свой собственный SortedListModel для вашего JList.Хорошую статью от оракула можно найти здесь .

2 голосов
/ 05 апреля 2011

Если вы не хотите хлопот сортировки объектов перед тем, как добавить их в JList, вы можете написать / использовать реализацию ListModel, которая уже хранит их сортировку для вас. Смотрите, например эта реализация .

Как я говорю почти в каждом вопросе, связанном с JLists / JTables, пожалуйста, ознакомьтесь с GlazedLists . Он делает практически все, что вы можете себе представить в отношении сортировки и фильтрации.

0 голосов
/ 05 апреля 2011

Вы можете использовать Sorted Combo Box Model . Я знаю, что говорит «комбинированное окно», но он также реализует интерфейс списка.

0 голосов
/ 05 апреля 2011

DefaultListModel отображает элементы в порядке их добавления.Вы можете просто добавить элементы по порядку, и они будут отображаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...