プログラミングメモ帳

プログラミングで躓いた部分を中心としたIT土方的メモ。

paint/paintComponentが呼ばれてないぞ?と思ったら

オーバーライドするとき、super() の呼び忘れがないかを確認する。

public class TestJPanel extends JPanel {
    
    public TestJPanel() {
        setBackground(Color.cyan);
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g); // 背景を描く
        g.drawLine(50, 50, 200, 200); // 線を描く
        g.drawLine(200, 50, 50, 200); // 線を描く
        g.drawRect(50, 50, 150, 150); // 四角を描く
        }
    }
}

のように、paintComponent()に描画処理を書いてしまって、paint()メソッドをオーバーライドしないようにする。

JPanelクラスのpaint()メソッドは内部でpaintComponent()を呼んでいるので、自分で手を加えると正常に動作しなくなる場合がある。