2017-01-04 108 views
0

我正在使用JPanel和JFrame類在窗口中創建簡單的圖形,並發現了一個相當奇怪的問題。我目前的設置是這樣的:JPanel重繪()方法問題

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的尺寸更改爲7000 x 10000的尺寸,它可以正常工作......請幫忙嗎?

+0

不需要在這裏調用repaint()。在添加所有組件後,只需在JFrame **上調用'setVisible(true)'。一個共同的問題。 –

+0

因此,刪除行'c.repaint();'並在其位置移動'a.setVisible(true);' –

回答

0

更換c.repaint();到:

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

它應該顯示紅色正方形,如你所願。