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