Задать MouseListener в анонимном классе

Рейтинг: 0Ответов: 2Опубликовано: 16.11.2014

Проблема вот в чём: сперва просит изменить wordList[i] на static. Меняю - просит изменить i на static. Смысла менять уже нет 100%. Подскажите, как сделать, чтоб заработало?

                    JButton[] wordList = showWords(wordPanel,searchField.getText(), 1);
                            for(int i=0; i<WORD_BTN_ARR_LEN-1;i++){
                                wordPanel.add(wordList[i]);                                 
                                wordList[i].addMouseListener(new MouseAdapter() {
                                     public void mouseMoved(MouseEvent e){
                                         wordList[i].setBackground(Color.blue);
                                    }
                                });
                            }

Ответы

▲ 1

Вместо

wordList[i].setBackground(Color.blue);

попробуйте

((JButton) e.getSource()).setBackground(Color.blue);
▲ 1

В анонимный класс могут быть переданы только final переменные. Попробуйте переписать свой код следующим образом:

     for(int i=0; i<WORD_BTN_ARR_LEN-1;i++){
         wordPanel.add(wordList[i]);
         final JButton btn = wordList[i];
         wordList[i].addMouseListener(new MouseAdapter() {
              public void mouseMoved(MouseEvent e){
                  btn.setBackground(Color.blue);
             }
         });
     }