如果需要调用方法,为什么update(Graphics g)方法可以自动运行?

时间:2019-02-18 23:58:35

标签: java loops

示例:当我们在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);
         }
        }

1 个答案:

答案 0 :(得分:1)

update()方法称为“回调”。它由Swing库调用。同样,paint()也是Swing将自动调用的回调。

请注意,在“现代” Swing中,您应该覆盖paintComponent()而不是paint()