A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 田旭阳 于 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呢,
那么什么情况可以去掉,什么时候必须有这行呢?

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马