JLabels の配列を含むゲーム フレームがあり、開始時にそのうちの 2 つ (最後と最初) に既存の (拡張された) MouseListener を追加しました。ここで、MouseListener を持つ JLabel がクリックされるたびに、その 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 メソッドを処理できません。静的ではありません。