JTable - сортировка визуализированных значений - PullRequest
2 голосов
/ 14 марта 2011

Я использую пользовательский рендерер для рендеринга значений ячеек в JTable. Когда я выполняю сортировку с использованием моего собственного Comparator или TableRowSorter, значения обычно сортируются с использованием данных из модели.

Есть ли способ сортировки столбцов по отображаемым значениям ячеек вместо исходного значения?

Ответы [ 3 ]

2 голосов
/ 14 марта 2011

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

Тогда ваш пользовательский компаратор должен знать, какими будут отображаемые значения, и сортировать по этим значениям. Это означает, что вам нужно преобразовать данные из TableModel в отображаемое значение в вашем компараторе.

2 голосов
/ 14 марта 2011

Да, используйте TableRowSorter, посмотрите учебник для примера:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html#sorting

0 голосов
/ 16 ноября 2011

Механизм рендеринга SwingX делает это автоматически (WYSIWYS - то, что вы видите, это то, что вы сортируете / ищете).Единственное, что вы должны предоставить, это StringValue: это говорит SwingX для определения представления содержимого ячейки

JXTable table = new JXTable(myModel); // creates a RowSorter automatically
StringValue sv = new StringValue() {
     @Override
     public String getString(Object value) {
          if (value instanceof MyClass) {
              return // whatever string you want to create from the valuee's property
          } 
          return StringValues.TO_STRING.getString(value);
     }
};
table.setDefaultRenderer(MyClass.class, new DefaultTableRenderer(sv));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...