示例:当我们在main方法中创建JFrame并覆盖更新时,我们无需在Jframe实例处调用更新来启动循环,此方法会自动开始,为什么?什么叫做更新?
例如:
public class Example extends JPanel{
public Example(){
setSize(new Dimension(500, 400));
setPreferredSize(new Dimension(500, 400));
setBackground(Color.BLACK);
setFocusable(true);}
@Override
public void update(Graphics g) {
paint(g);
System.out.println("The method update is always being running, but I never call it at main method!")
}
@Override
public void paint(Graphics g) {
g.setColor(Color.WHITE);
g.fillOval(0, 0, 40, 40);
g.dispose();
repaint();
}
public static void main(String[]args){
Example example = new Example();
JFrame frame = new JFrame();
frame.setTitle("Why?");
frame.add(example);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
答案 0 :(得分:1)
update()
方法称为“回调”。它由Swing库调用。同样,paint()
也是Swing将自动调用的回调。
请注意,在“现代” Swing中,您应该覆盖paintComponent()
而不是paint()
。