У меня есть игровой кадр с массивом JLabels, в который я добавил существующий (расширенный) MouseListener для двух из них (последний и первый) при запуске. Теперь, каждый раз, когда был нажат JLabel с MouseListener, я хочу, чтобы у него больше не было этого MouseListener, и вместо этого MouseListener переходит к следующему/предыдущему индексу в массиве JLabel.
Я не могу найти механизм, который может обрабатывать этот алгоритм.
public class NumberGameFrame extends javax.swing.JFrame {
...
JLabels[] numbers;
int left, right;
public void playPVC() {
...
left = 0; right = numbers.legth - 1;
PVCMouse pvc_mouse = new PVCMouse(); // MouseListener
setPlaybleNumbers(left,right,pvc_mouse);
...
}
public void setPlaybleNumbers(int left, int right, MouseListener mouse){
for(int i = 0; i < numbers.length; i++){ // "kill" other numbers first
if (i != left && i != right){
if (numbers[i].getMouseListeners() != null){
numbers[i].removeMouseListener(mouse);
}
...
}
}
numbers[left].addMouseListener(mouse);
...
numbers[right].addMouseListener(mouse);
...
}
...
}
Я подумал, что каким-то образом pvc_mouse.mouseClicked() может вызвать this.setPlaybleNumbers(++left,..) или (--right,...), но MouseListener не может обработать массив JLabel и метод setPlaybleNumbers, потому что они не статично.