-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

您的自定义绘画已添加到 GuiDemo1 类而不是 JPanel 类:

//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 回答