黑马程序员技术交流社区

标题: 为何要调用?super.paintComponent()请大侠过来看看 [打印本页]

作者: 田旭阳    时间: 2012-9-15 11:32
标题: 为何要调用?super.paintComponent()请大侠过来看看
本帖最后由 田旭阳 于 2012-9-15 11:33 编辑

【Core Java】中说JPanel与JComponent最大区别是JPanel不透明,而JPanel子类中覆盖paintComponent方法最常见做法是先调用super.paintComponent方法来用背景色绘制面板,可是为什么我没有调用super.paintComponent方法也会默认用背景色来绘制面板呢?
下边是我实验的代码。。
[code = Java]
import javax.swing.*;
import java.awt.*;

public class MySwing {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

SimpleFrame frame = new SimpleFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}

class SimpleFrame extends JFrame {
public SimpleFrame() {
Toolkit kit = Toolkit.getDefaultToolkit();
setBounds(100, 100, kit.getScreenSize().width/2, kit.getScreenSize().height/2);
setTitle("Very Cool!!!");
setResizable(false);
setBackground(Color.BLACK);

Container c = getContentPane();
MyComponent m = new MyComponent();
c.add(m);

}
}
class MyComponent extends JPanel{
public void paintComponent(Graphics g) {
g.drawString("Very Happy", 100, 100);
}
}
super.paintComponent方法有什么用,
怎么还看到有的paintComponent中没有用调用super.paintComponent呢,
那么什么情况可以去掉,什么时候必须有这行呢?






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2