получение цветов TableCellEditor для соответствия внешнему виду - PullRequest
2 голосов
/ 14 мая 2009

Так что у меня есть пользовательские CellEditors и CellRenderers, и хотя я делаю

component.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
component.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
component.setOpaque(true);

в моем getTableCellRendererCompoent цвета совпадают только в каждой ДРУГИХ строках, так как большая часть того, что я пробовал, кажется, чередует их. Как я могу получить значения цвета таким образом, чтобы они соответствовали тому, на что похожа остальная часть таблицы? Я также очень хотел бы иметь возможность создавать красивые границы, чтобы соответствовать средствам визуализации, происходящим от DefaultTableCellRenderer.

Я пытался разобрать DefaultTableCellRenderer, и я заблудился, пытаясь отследить этот объект пользовательского интерфейса. Мне просто нужны правильные свойства, чтобы вытащить из UIManager? Лидерство в правильном направлении будет высоко ценится.

Спасибо всем, этот сайт качается. Joshua

1 Ответ

4 голосов
/ 14 августа 2009

Да, вы должны использовать цвета палитры Swing. Например:

final Color tableBackground = javax.swing.UIManager.getDefaults().getColor("Table.background");

Вот ключевые значения цвета для таблиц:

  • Table.background Table.dropLineColor
  • Table.dropLineShortColor
  • Table.focusCellBackground
  • Table.focusCellForeground
  • Table.foreground Table.gridColor
  • Table.selectionBackground
  • Table.selectionForeground
  • Table.sortIconColor
  • TableHeader.background
  • TableHeader.focusCellBackground
  • TableHeader.foreground

В качестве альтернативы вы также можете использовать системные цвета . Например:

Нормальный фон: SystemColor.window
Выбранный фон: SystemColor.textHighlight
Обычный передний план: SystemColor.text
Выбранный передний план: SystemColor.textText

...