

`JPanel`を継承したクラスに`KeyListener`をつけているのですが、下のコードだと"入力"と表示されません。  
コンストラクタ内にある`mapImg[n] = ImageIO.read(以下省略)`をコードから削除するとキー入力が反応するようになります。

この事象の発生理由と解決方法をご教授いただけないかと質問させていただきました。  
どうぞよろしくお願いします。

[code]

    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    
    public class WindowPanel extends JPanel implements KeyListener {
    
        public static BufferedImage[] mapImg = new BufferedImage[3];
        public static String path = new File(".").getAbsoluteFile().getParent();
    
    
        public WindowPanel() {
            setFocusable(true);
            addKeyListener(this);
    
            try {
    
                mapImg[0] = ImageIO.read(new File(path)).getSubimage(0, 0, 20, 20);
                mapImg[1] = ImageIO.read(new File(path)).getSubimage(20, 0, 20, 20);
                mapImg[2] = ImageIO.read(new File(path)).getSubimage(40, 0, 20, 20);
    
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("エラー");
            }
        }
    
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            Graphics2D g2 = (Graphics2D) g;
        }
    
        @Override
        public void keyTyped(KeyEvent e) {
            System.out.println("入力");
        }
    
        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println("入力");
        }
    
        @Override
        public void keyReleased(KeyEvent e) {
            System.out.println("入力");
        }
    }
    
[/code]


CC BY-SA 3.0
2015-12-27T01:17:16.240
20408
2015-12-28T08:27:23.467
2015-12-28T08:27:23.467
5778
13821
question
java swing
ImageIO.read使用時のKeyListener<Java>