2011-01-27 12 views
1

これは私の神経に乗っていて、おそらく私の部分では愚かなことですが、なぜ私のpaintComponentが2回呼び出されているのか理解できません。繰り返す?二度と、私はそれをしたくない...それはなぜそれを行うのですか、どうすれば修正できますか?なぜ私のコードはpaintComponent(グラフィックスページ)を2回実行していますか?

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); 

    } 



} 
+0

を私はあなたのコードを実行し、paintComponentは1回だけ実行されます。 REPEATが印刷されますか?一度だけ。 –

+0

本当ですか?私のJavaのインストールや何かに何か問題がありますか? EclipseとnetbeansのJavaSE-1.6.0_22は、REpEATを引き起こしますか? 2回 – novar

+0

@novar:はい。私もJRE6とEclipseを使用しています。それは私のマシン上でうまくいく。 –

答えて

2

それも私のために2回印刷されました。

しかし、私はそれが心配の原因だとは思わない。 Swingは、いつ再描画が必要かを決定します。たとえば、ウィンドウのサイズを変更したり、最小化/最大化すると、Swingは再描画します。実行しているOS /ハードウェアに依存している可能性があります。

repaintへの複数のコールを処理するのに十分な堅牢性を持つようにコードを記述する必要があります。

これはSOあまりにも質問をご覧下さい:paintComponent is executing twice

+0

はい、それは私の前の質問でした。どうもスイングがなぜ再塗装することになったのか不思議でした。 – novar

関連する問題