TreeTableRender для JXTreeTable

Как я могу назначить разные визуализаторы для разных столбцов в JXTreeTable. JXtreeTable имеет разные типы столбцов (например, валюта, дата и т. д.). В JXTable я использовал метод getColumn(identifier).setCellRender(TableCellRender). Что мне делать с JXTreeTable?


person user1855808    schedule 26.06.2014    source источник


Ответы (1)


Поскольку все столбцы одного типа должны обрабатываться одинаково, вы можете просто назначить средство визуализации по умолчанию для каждого класса. Например, в вашей таблице есть два столбца со значениями java.util.Date, и вы хотите, чтобы они оба обрабатывались одинаково:

myTreeTable.setDefaultRenderer(java.util.Date.class, new DefaultTableRenderer(StringValues.DATE_TO_STRING));

Первый аргумент — это тип объекта, который вы хотите обработать этим модулем визуализации. Второй аргумент — средство визуализации ячеек. SwingX поставляется с очень простым механизмом рендеринга, который называется DefaultTableRenderer. Он принимает ряд возможных аргументов, но самый простой — предоставить экземпляр StringValue. Это интерфейс, который при реализации берет произвольный объект и каким-то образом преобразует его в строку. Класс StringValues ​​содержит несколько предопределенных реализаций. В приведенном выше примере я использую StringValues.DATE_TO_STRING, который передает объект java.util.Date в ячейке экземпляру DateFormat по умолчанию и возвращает результат String. Продолжайте в том же духе для всех классов объектов, которые вы хотите обработать.

Если вам нужен конкретный рендеринг только для одного столбца, вы просто вставляете столбец в середину вызова:

myTreeTable.getColumnExt(myColumnIdentifier).setCellRenderer(java.util.Date.class, new DefaultTableRenderer(myGloriousStringValueConverter));

Обратите внимание, что вызов больше не относится к setDefaultCellRenderer.

Этот механизм рендеринга является одной из лучших функций SwingX. Прост в использовании и достаточно эффективен в сочетании с конвейером Highlighter.

Все это относится к табличной части JXTreeTable. Иерархический столбец (первый столбец) можно настроить таким же образом, только вызов

myTreeTable.setTreeCellRenderer(new DefaultTreeRenderer(myGloriousStringValue));
person Mike Adler    schedule 02.07.2014