У меня есть базовая переменная JTable, и требуется, чтобы при щелчке по любой ячейке выделялась вся строка, а также чтобы ячейка, по которой щелкали, была другого цвета, чем остальная часть выделенной строки.
В настоящее время у меня есть isRowSelectionAllowed как true
Я попытался использовать пользовательский TableCellRenderer , который выглядит следующим образом:
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
c.setBackground(Color.red);
}
else {
c.setForeground(Color.black);
c.setBackground(Color.white);
}
return c;
}
}
Но, похоже, это не сработало (вся строка была выделена красным).
Я также попытался установить свойство UIManager следующим образом:
UIManager.put("Table.focusCellBackground",
new javax.swing.plaf.ColorUIResource (Color.red));
Но это не такпохоже, тоже работает (хотя, когда я пытался установить границу с помощью
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.red));
, которая работала хорошо)
Не могли бы вы дать какие-либо предложения, что мне может понадобиться сделать?