这是java代码约JPanel
:为什么在创建JPanel类对象时,会自动调用paintComponent方法?
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”然而,如果它被调用时,它会导致编译错误。 这种设计是不可避免的?
当你这样做,有必要发生? 我想知道这一点,当然还有解决方案。
P.S: 根据官方文件,只有当我打电话repaint()
,它会调用paintComponent()
。所以我可以在paintComponent
之内编写我的自定义代码。
请学习java命名约定并坚持使用它们。 – kleopatra
@kleopatra你是什么意思?请举例说明。谢谢。 – Stallman