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

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

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("入力");
    }
}