Существует общий метод при использовании JTable TableCellRenderers для установки фона и переднего плана при выборе ячейки.Вот пример вопроса, который был задан:
Почему мой рендерер пользовательских ячеек Java не отображает подсветку при выборе строки / ячейки?
В этом решении отсутствует одинвещь ... граница вокруг клетки.(Обратите внимание, что я не спрашиваю о границе вокруг строки, как было задано здесь .) Граница должна выделяться при выборе ячейки.Недопустимо просто создавать свою собственную границу и устанавливать ее, потому что создаваемая вами граница может не вписываться в Look & Feel.
Я успешно получил границу, инициализировав средство визуализации по умолчанию, изатем очистите его для границы, как показано ниже:
private final DefaultTableCellRenderer defTblRend = new DefaultTableCellRenderer();
private final JComponent renderer = new ComplexCell(); // Whatever object type extends JComponent
@Override public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column)
{
// ... Set values on "renderer" object here ...
renderer.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
renderer.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
renderer.setOpaque(!renderer.getBackground().equals(table.getBackground()));
JComponent comp = (JComponent)defTblRend.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
renderer.setBorder(comp.getBorder());
return renderer;
}
Есть ли лучший способ?