2016-04-09 31 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 and Swingのペイント](http://www.oracle.com/technetwork/java/painting-140037.html)および[カスタム・ペイントの実行](http://docs.oracle.com/javase/tutorial/uiswing/painting /) – MadProgrammer

+1

私はこのトピックをオフトピックとして閉じることにしました。これは、[AWTとスイングのペインティング](http: //www.oracle.com/technetwork/java/painting-140037.html) – MadProgrammer

答えて

3

大まかに。 UIコンポーネントを使用すると、さまざまな種類のイベントを管理するUIスレッドが開始されます。これらのイベントの中には、パネルの可視性に関連するものがいくつかあります。たとえば、ホストグラフィックシステムがパネルを可視にしたい場合、アプリケーションにイベントを送信してパネルの描画を要求し、次にUIスレッド適切なpaint()メソッドを呼び出すと、paintComponent()が呼び出されます。

0

実際にメソッドを明示的に呼び出すわけではありません。プログラムは、メソッドを呼び出す必要があるときにそれ自身を決定します。通常、変更が発生すると発生します。

強制的に再描画する場合は、ビュークラス(またはそのオブジェクト)内のメソッドrepaint()を呼び出します。

また、paintComponent()メソッド内では、まずsuper.paintComponent()を呼び出してください。