Если необходимо вызвать методы, почему метод update (Graphics g) может запускаться автоматически? - PullRequest
0 голосов
/ 19 февраля 2019

Пример: когда мы создаем 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 голосов
/ 19 февраля 2019

Метод update() это то, что известно как «обратный вызов».Он вызывается библиотекой Swing.Точно так же paint() также является обратным вызовом, который Swing будет вызывать автоматически.

Обратите внимание, что в "современном" Swing вы должны переопределить paintComponent() вместо paint().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...