почему мой код выполняет paintComponent (графическую страницу) дважды? - PullRequest
1 голос
/ 27 января 2011

Это действует мне на нервы и, возможно, это что-то глупое с моей стороны, но я не могу понять, почему мой paintComponent вызывается дважды, если вы запускаете мой код, он выводит REPEAT? ПОВТОРЕНИЕ? дважды, я не хочу, чтобы это делалось .. Так почему это происходит и как я могу это исправить?

import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;

public class Main extends JPanel {


    public Main()
    {      
     /*code here*/
    }

    public void paintComponent(Graphics page)
    {
     clear(page);

        /*code here*/

        System.out.println("REpEAT?"); 

    }

    protected void clear(Graphics page) {
        super.paintComponent(page);
      }

    public static void main (String[] args)
    {
        JFrame frame = new JFrame ("Circles");
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        frame.getContentPane().add(new Main());
        frame.setVisible(true);

    }



}

1 Ответ

2 голосов
/ 27 января 2011

Для меня это тоже распечатано дважды.

Однако я не думаю, что это повод для беспокойства.Swing решает, когда что-то нужно перекрасить.Например, если вы измените размер окна или свернете / развернете, Swing перекрасит.Это может зависеть от операционной системы / аппаратного обеспечения, на котором вы работаете.

Вы должны написать свой код так, чтобы он был достаточно устойчивым для обработки нескольких вызовов на repaint.

вопрос тоже: paintComponent выполняется дважды

...