-3
import java.awt.Color;
import java.awt.Graphics;
//import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class GuiDemo1 extends JPanel{


    public static void main(String[] args){
            JPanel panel=new JPanel();
            JFrame frame=new JFrame();
            frame.getContentPane().add(panel);
            frame.setVisible(true);
            frame.setSize(500, 400);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }



    @Override
    public void paintComponent(Graphics g)
        {

            g.setColor(Color.red);
            g.fillRect(20, 50, 100, 100);
        }

}

私はJAVAの初心者です。このサンプルプログラムを作成しましたが、これは機能していません。誰かが私が犯した間違いを指摘できますか。

そして、一般的に、super.paintComponent(g)を呼び出すことの使用は何ですか?

4

1 に答える 1

2

カスタムペイントは、JPanelクラスではなくGuiDemo1クラスに追加されました。

//JPanel panel=new JPanel();
JPanel panel=new GuiDemo1();

そして一般的にsuper.paintComponent(g)を呼び出すことの使用は何ですか?>

これは、paintComponent(...)メソッドの開始時に必要です。これは、コンポーネントのデフォルトのペイントを実行するためです。JPanelの場合、基本的には背景をペイントするだけです。追加してみてください:

panel.setBackground( Color.BLUE );

そして、super.paintComponent(g)の有無にかかわらず何が起こるかを確認してください。

于 2013-02-23T06:38:56.667 に答える