Добавить прослушиватель мыши в JLabel в ListCellRenderer

У меня есть ListCellRenderer, состоящий из двух JLabels; один для текста и один для выходного изображения (крестик).

Я хочу добавить к этому крестику mouselistener, при нажатии на который элемент удаляется из JList.


person rtc11    schedule 14.03.2012    source источник
comment
нет смысла добавлять прослушиватель к компоненту рендеринга (он никогда не является частью иерархии контейнеров, поэтому никогда не увидит никаких событий). Вместо этого добавьте прослушиватель в список и проверьте, будет ли событие над значком, если компонент был добавлен для рендеринга этой строки.   -  person kleopatra    schedule 14.03.2012


Ответы (1)


Вы можете попробовать добавить MouseListener непосредственно в свой JList следующим образом:

list.addMouseListener(new MouseAdapter(){
   public void mouseReleased(final MouseEvent e) {
         if (e.isPopupTrigger()) {               

             // Get the position of the click
              final int x = e.getX();
              final int y = e.getY();

              // Verify that the click occured on the selected cell
              final int index = list.getSelectedIndex();
          }
    }
});

Теперь, в зависимости от указанного выше индекса, вы можете добиться того, чего хотите.

person Rahul Borkar    schedule 14.03.2012
comment
эээ.. какое отношение имеет свойство popupTrigger к вопросу? - person kleopatra; 14.03.2012
comment
@kleopatra, спасибо за указание на ошибку, я очень ценю это. - person Rahul Borkar; 14.03.2012