Как применить рендерер только к определенной ячейке вместо целого столбца в JTable? - PullRequest
2 голосов
/ 21 февраля 2012

Я тихий новичок в Swing. У меня есть JTable, в котором изображения отображаются в каждой ячейке. Мне нужно создать КРАСНУЮ рамку только вокруг ячейки, которая в данный момент выбрана. Для этого я использовал следующий класс рендерера:

public class ImageRenderer extends DefaultTableCellRenderer {
 JLabel lbl=new JLabel();     

 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column )
 {

     lbl.setIcon((ImageIcon)value); 
     if(isSelected && hasFocus)
     {
         lbl.setBorder(BorderFactory.createEtchedBorder(Color.RED, Color.yellow));
     }
     return lbl;


 }
} 

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я щелкаю по любой ячейке в JTable, вместо этой конкретной ячейки отображается граница для всех ячеек данного столбца. Мне нужна только граница вокруг выбранной ячейки, а не вокруг всех ячеек, присутствующих в этом конкретном столбце.

1 Ответ

7 голосов
/ 21 февраля 2012

Вы пытались сбросить границу, если ячейка не выбрана?

     if(isSelected && hasFocus)
     {
         lbl.setBorder(BorderFactory.createEtchedBorder(Color.RED, Color.yellow));
     }else{
         lbl.setBorder( BorderFactory.createEmptyBorder() );
     }
...