JXTable с DefaultTableCellrenderer и альтернативной подсветкой чередования - PullRequest
4 голосов
/ 27 мая 2011

Я обновился до SwingX-1.6.2, но обнаружил проблемы, которых не было в 1.6. Цвета ячеек JXTable выглядят странно. Я использую маркер с альтернативным чередованием (HighlighterFactory.createAlternateStriping) для цветов и подкласс DefaultTableCellRenderer для настроек текста, шрифта, ...

Начиная с 1.6.1, кажется, что цвета подсветки игнорируются, если установлен пользовательский модуль визуализации ячеек. В документации сказано, что есть взлом, но он не работает.

Кто-нибудь есть решение для этого?

Ответы [ 3 ]

4 голосов
/ 13 июня 2011

Для пользовательского рендеринга ячеек в SwingX,

  • никогда не существующий подкласс xxRenderer
  • никогда не принадлежащий подклассу JXTable (ни JXList, JXTree / Table)

Вместо

  • внедрить / использовать StringValue для настройки аспектов «контента», таких как текст, значок.
  • использовать / внедрить Highlighter для настройки «визуальных» аспектов, таких как цвет, шрифт, рисовальщик
  • если требуется условное визуальное оформление, внедрите / используйте HighlightPredicate и настройте с ним Highlighter
  • настройте xxRenderer со StringValue и / или Highlighter

Редактировать :

Если требуются неподдерживаемые типы компонентов рендеринга, необходимо реализовать ComponentProvider.Это небольшая работа, потому что провайдер должен выполнить строгий контракт (например, сбросить гарантированные значения свойств, уважать StringValue, ... см. API-документ), но это необходимо только один раз для каждого типа компонента.После этого один и тот же поставщик может использоваться во всех типах компонентов сбора (список JXList, JXComboBox, JXTree / Table)

0 голосов
/ 28 мая 2011

Мне не удалось воспроизвести проблему в SSCCE, но я в своем (очень сложном) приложении решил ее, используя средство визуализации, унаследованное от DefaultTableRenderer SwingX вместо DefaultTableCellRenderer * в Java. 1004 *.

0 голосов
/ 27 мая 2011

Я не знаю, как JXTable делает подсветку, но вы всегда можете сделать это самостоятельно.См. Таблица Строка Renderering .

...