Использование TableRowSorter с scala.swing.Table - PullRequest
3 голосов
/ 06 марта 2012

Я работаю над простым пользовательским интерфейсом, в котором есть компонент scala.swing.Table. Я хотел бы отсортировать строки таблицы с помощью java.swing.table.TableRowSorter. Класс Table не предоставляет API для использования сортировщика строк, поэтому я попытался установить его непосредственно на одноранговом узле

val table = new Table(height, width) {
  import javax.swing.table._
  rowHeight = 25
  autoResizeMode = Table.AutoResizeMode.NextColumn
  showGrid = true
  gridColor = new java.awt.Color(150, 150, 150)
  model = myModel

  peer.setRowSorter(new TableRowSorter(model))
}

Теперь, когда я нажимаю на заголовки столбцов, я получаю маленькие стрелки вверх / вниз, но содержимое таблицы не обновляется с новым порядком сортировки. Если при щелчке по заголовку столбца выбрана строка, выделение перемещается в строку, в которой должна быть выбрана строка, в соответствии с порядком сортировки. Я добавил пользовательские компараторы, которые вызываются, как и ожидалось, поэтому сортировка действительно выполняется, но таблица не обновляется.

Я что-то упустил, чтобы обновить таблицу? Является ли законным доступ к базовому одноранговому объекту JTable?

1 Ответ

1 голос
/ 09 марта 2012

Отвечая на мой вопрос.

Класс scala.swing.Table не поддерживает функции сортировки строк, добавленные в Java 6. См. Исходный файл Table.scala в строке 277:

def apply(row: Int, column: Int): Any = model.getValueAt(row, viewToModelColumn(column))

// TODO: this is Java 6 stuff
// def apply(row: Int, column: Int): Any = model.getValueAt(viewToModelRow(row), viewToModelColumn(column))
//def viewToModelRow(idx: Int) = peer.convertRowIndexToModel(idx)
//def modelToViewRow(idx: Int) = peer.convertRowIndexToView(idx)

Я переместил файлы scala.swing в другой пакет и встроил его в свой проект, затем раскомментировал материал Java 6 и закомментировал старый метод apply (), и теперь сортировка таблиц работает.

Вот ссылка на сообщение об ошибке по этому вопросу. Код Java 6 был добавлен еще в августе, а затем удален до тех пор, пока сборка библиотеки Scala не переключится на Java 6.

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