2016-04-09 58 views
0

這是我的代碼,它的工作完美並在JFrame中繪製形狀。每種方法都是通過其名稱進行調用,並且在我的程序中我沒有調用任何paintComponent()方法。那麼paintComponent()方法的調用方法在哪裏?paintComponent()函數調用

import javax.swing.*; 
import java.awt.*; 
import java.util.*; 

public class drawings extends JPanel { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     JFrame frame = new JFrame(); 
     frame.setTitle("Shapes"); 
     frame.setVisible(true); 
     frame.setBounds(150, 10, 1000, 700); 
     frame.setResizable(false); 
     frame.add(new drawings()); 
    } 
    public void paintComponent(Graphics g){ 
     g.setColor(Color.BLUE); 
     g.fillRect(20, 10, 200, 100); 
     g.setColor(Color.magenta); 
     g.fill3DRect(230, 10, 200, 100, false); 
    } 
} 
+1

請參閱[在AWT和Swing中繪畫](http://www.oracle.com/technetwork/java/painting-140037.html)和[執行自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting /)獲取更多關於繪畫作品的詳細信息 – MadProgrammer

+1

我正在投票結束這個問題,因爲它可以通過閱讀官方文檔輕鬆回答,[在AWT和Swing中繪畫](http: //www.oracle.com/technetwork/java/painting-140037.html) – MadProgrammer

回答

3

粗略地。當您使用UI組件時,會啓動一個UI線程來管理不同類型的事件。在這些事件中,有一些與面板的可見性有關,例如,當主機圖形系統希望面板可見時,它會嚮應用程序發送事件以請求面板的繪製,然後UI線程回撥相應的paint()方法,然後調用paintComponent()

0

您實際上沒有明確地調用該方法。程序需要調用時,程序自行決定。它通常發生在發生變化時。

如果您有機會想要強制重繪,只需在您的視圖類(或該對象)內調用方法repaint()即可。

同樣在您的paintComponent()方法中,請確保您要做的第一件事是致電super.paintComponent()