2017-01-04 10 views
0

JPanelとJFrameクラスを使用してウィンドウに単純なグラフィックを作成していて、むしろ奇妙な問題が見つかりました。私の現在の設定は次のような次のとおりです。JPanel repaint()メソッドの問題

以上
import javax.swing.JFrame; 

public class MyFrame extends JFrame{ 

    public MyFrame() { 
     super("App Schmapp!"); 
     this.setSize(new java.awt.Dimension(500, 500)); 
     this.setMinimumSize(this.getSize()); 
     this.setMaximumSize(this.getSize()); 
     this.setVisible(true); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 

    public static void main(String[] args) { 
     MyPanel c = new MyPanel(); 
     MyFrame a = new MyFrame(); 
     a.add(c); 
     c.repaint(); 

    } 

} 

は明らかに私のJFrameクラスであり、以下の私のJPanelクラスは、私はこのコード空白を実行したときに私の希望は、しかし、これがうまくいくということでしょう

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JPanel; 

public class MyPanel extends JPanel { 

    public void paintComponent(Graphics G) { 
     super.paintComponent(G); 
     Graphics2D g = (Graphics2D) G; 
     g.setColor(Color.RED); 
     g.fillRect(50, 50, 50, 50); 
    } 

} 

ですウィンドウはグラフィックスなしでポップアップします。私が理解していない部分は、JFrameのサイズを10000で7000のように変更すると、うまくいきます...助けてください。あなたが望むようにそれは赤い四角が表示されるはずです

a.pack(); 
a.setVisible(true); 

c.repaint();

+0

ここで 'repaint()'を呼び出す必要はありません。 **すべてのコンポーネントを追加した後は、単にJFrame **で 'setVisible(true)'を呼び出すだけです。共通の問題。 –

+0

'c.repaint();'行を削除し、 'a.setVisible(true);'を移動します。 –

答えて

0

を交換してください。

関連する問題