Пользовательский рендеринг заголовков JTable, который выглядит как другие заголовки с нимбом?

Каждый раз, когда я создаю пользовательский рендерер заголовка для JTable, он выглядит неправильно с внешним видом нимба. Заголовки таблиц по умолчанию имеют серебристый градиент, пользовательские средства визуализации не выглядят так. Раньше я просто избегал создания пользовательских рендереров заголовков. Можно ли скопировать внешний вид по умолчанию на мой новый пользовательский модуль визуализации? По сути, я хочу добавить флажок, и область вокруг него будет выглядеть как обычный заголовок столбца, а не просто серый. Я знаю, как добавить флажок и сделать его доступным для кликов. Спасибо


person startoftext    schedule 04.06.2010    source источник
comment
Все еще интересует этот вопрос? :-)   -  person AgostinoX    schedule 14.02.2012


Ответы (2)


Вы можете создать MyTableHeaderRendererPainter, расширяющий AbstractRegionPainter (javax.swing.plaf.nimbus.AbstractRegionPainter).

Посмотрите, как Nimbus стилизует свой Painter https://github.com/xsstomy/javacode/blob/master/javax/swing/plaf/nimbus/TableHeaderRendererPainter.java

Затем вы вызываете компонент вашего пользовательского рендерера

.setBackground(new MyTableHeaderRendererPainter());

Писать художников сложно. К сожалению, Nimbus TableHeaderRendererPainter не виден. Возможно, вы можете использовать Painter с другим внешним видом, чтобы получить приемлемый результат.

person gute Fee    schedule 17.08.2019

Используйте средство визуализации заголовков по умолчанию из вашего tableHeader:

table.getTableHeader().getDefaultRenderer()

person Thomas Morgner    schedule 28.04.2011
comment
Это не поможет сохранить правильный внешний вид заголовка. На экране он будет отображаться по-другому. - person Adrian Romanelli; 08.03.2016