これは、次の Java コードですJPanel
。
class Battle_field extends JPanel{
public List<Image_Obj> pics_to_be_drawn;
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(pics_to_be_drawn.get(0).Get_the_buf_img() , 41, 41, 59, 59, Color.black, null);
}
}
GUI をセットアップすると、次のようになります。
added_panel= new Battle_field();
added_panel.setBorder(new LineBorder(SystemColor.activeCaption, 3));
added_panel.setBounds(27, 10, 397, 630);
added_panel.setBackground(Color.white);
this.getContentPane().add(added_panel);
上記のオブジェクトを作成すると、 が自動的Battle_field()
に呼び出されることがわかりました。paintComponent
しかし、ここでは、変数「pics_to_be_drawn」をまだ初期化していないので、これを呼び出すとコンパイラ エラーが発生します。このデザインは仕方がないのでしょうか?
あなたがそうするように、それは起こる必要がありますか?私はこれを非常に知りたい、そしてもちろん解決策を知りたい.
ps: 公式ドキュメントによると、私が を呼び出した場合にのみ、repaint()
が呼び出されますpaintComponent()
。そのため、カスタマイズしたコードを 内に記述できますpaintComponent
。