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()を呼んでいるので、自分で手を加えると正常に動作しなくなる場合がある。