Визуализация набора <T>с помощью JTable в Java Swing - PullRequest
3 голосов
/ 07 апреля 2011

Я хотел бы визуализировать набор потоков, что-то вроде: Set<ThreadInfo>. Я выбираю Set, так как каждый поток в JVM уникален. При выборе его отображения с помощью компонента JTable в Java Swing я столкнулся с некоторыми проблемами.

Мне нужно реализовать TableModel. TableModel использует getValueAt(int row, int col) или setValueAt(Object o, int row, int col) для распространения измененных значений.

Но как мне реализовать эти методы, используя Set в качестве модели данных? Для списка я бы сказал row = list index, но для набора я не могу делать предположения о порядке элементов.

Ответы [ 4 ]

3 голосов
/ 07 апреля 2011

Я бы придерживался использования Списка, так как надежное упорядочение довольно важно при поддержке таблицы. В противном случае вы можете использовать отсортированный набор, такой как TreeSet .

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

Определите порядок упорядочения потоков и создайте копию набора в списке, который упорядочен правильно.Используйте этот список для модели.Когда набор изменений изменится, обновите список новыми упорядоченными данными.

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

Таблица по сути отображает список, базовой моделью данных обычно является Vector of Vector или массив Object [] []. Таким образом, в этом случае вам нужно преобразовать ваш Set в список (так что вам нужны две структуры данных, которые остаются синхронизированными), и вам нужен разумный произвольный доступ - небольшой Set может подойти для перебора и поиска вещей, но что угодно значительный размер будет проблемой, как часто будет спрашивать JTable при определенных обстоятельствах.

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

Set не предоставляет метод для получения Объекта через индекс.

Вы должны использовать список, чтобы делать то, что вы хотите.

Или перебирайте элементы до тех пор, пока индекс не будет передан параметром в строку int (Избегайте этого решения).

...