「スレッド「AWT-EventQueue-0」の例外」java.lang.ArrayIndexOutOfBoundsException:0が発生しましたが、その理由がよくわかりません。
私はこれらの2つの内部クラスを持っており、JPanelのリスナーとして次のように使用していますbildYta
。
private class NyPlatsLyss implements ActionListener{
public void actionPerformed(ActionEvent e){
bildYta.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
bildYta.addMouseListener(new BildYtaLyss());
bildYta.addKeyListener(new EscLyss());
bildYta.requestFocusInWindow();
enableOperations(false);
}
}
private class EscLyss extends KeyAdapter{
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
bildYta.setCursor(Cursor.getDefaultCursor());
bildYta.removeMouseListener(bildYta.getMouseListeners()[0]);
bildYta.removeKeyListener(this);
enableOperations(true);
}
}
}
ボタンを押すと、両方のリスナーがに追加されbildYta
ます。私が理解していないのは、追加したばかりのマウスリスナーを削除すると、なぜ.ArrayIndexOutOfBoundsException:0が発生するのかということです。例外が発生しないこともあれば、発生することもあります。これらのリスナーを追加した後は、プログラムで他に何も起こらないはずなので、コードの残りの部分で問題が発生することはありません。ESCが押されるかマウスがクリックされるのを待ちます