Вы должны создать собственный TableCellRenderer
и передать его в таблице
как этот
public class ColorRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
// get the DefaultCellRenderer to give you the basic component
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
// apply your rules
if(table.isRowSelected(row) && table.isColumnSelected(col))
c.setBackground(Color.GREEN);
else{
c.setBackground(table.getBackground());
}
return c;
}
}
в этом классе мы проверяем, если данная ячейка, если выбранная ячейка (которая в значительной степени то, что происходит, когда мы нажмем его) и покрасим его по-другому (в моем случае я нарисую его зеленый), иначе мы будем рисовать цветом по умолчанию или любым другим цветом.
не забудьте установить пользовательский визуализатор вы только что создали
table.setDefaultRenderer(Object.class, new ColorRenderer());
Edit 1
вы должны получить строку и седловины в щелкнул клетки.
создать 2 ИНТ переменным, которые будут занимать позицию
private int clickedRow=-1,clickedCol=-1;
добавить слушатель мыши, который обновляет переменной позицию
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent event) {
clickedRow= table.rowAtPoint(event.getPoint());
clickedCol= table.columnAtPoint(event.getPoint());
}
});
после этого вы измените визуализатор так рисует только щелкнули ячейку специальный цвет
if(clickedRow == row && clickedCol == col){
c.setBackground(Color.GREEN);
}
Благодарим за ответ. Я забыл добавить, что вся таблица отключена, поэтому невозможно «выбрать» ячейку, только щелкнув по ней. Возможно ли это? – RagnarLodbrok
Я обновил свой ответ. На самом деле, я не попробовал второй способ, скажите, работает ли он. – Phenom