2015-03-29 6 views
2

Я новичок в Java, и я хочу изменить цвет фона конкретной ячейки, на которую я нажал, JTable.Установить цвет фона ячейки таблицы с щелчком

Я знаю, что я должен использовать MouseListener, который я уже сделал, также, mousePressed. Но на данный момент я довольно потерян.

EDIT: Забыл добавить, что таблица отключена, поэтому вы не можете выбрать ячейку.

Может ли кто-нибудь мне помочь? Благодаря!

ответ

2

Вы должны создать собственный 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); 
} 
+0

Благодарим за ответ. Я забыл добавить, что вся таблица отключена, поэтому невозможно «выбрать» ячейку, только щелкнув по ней. Возможно ли это? – RagnarLodbrok

+0

Я обновил свой ответ. На самом деле, я не попробовал второй способ, скажите, работает ли он. – Phenom

Смежные вопросы