public class MyPanel extends JPanel{ public void paintComponent(Graphics g) { super.paintComponent(g);//这句有啥用,去掉也得啊 g.drawString("Hello World!",160,20); g.setColor(Color.blue); g.fillRect(160,40,60,60); } } 还有,我用paint函数也可以,到底这两函数有啥区别呢?
还有,如果我去掉super那句后,然后设置JPanel控件背景色: JPanel2=new MyPanel(); JPanel2.setBackground(Color.green); 好像改变不了颜色。
2009-09-20 20:39
提问者采纳
super.paintComponent(g)是父类JPanel里的方法,会把整个面板用背景色重画一遍,起到清屏的作用 awt控件中是在paint方法进行绘制, 所以在awt控件继承时,只要简单的覆盖paint方法就可以了。 而在swing控件中,paint方法会依次调用paintcomponent, paintborder, paintchildren三个方法,后两者一般默认即可,所以swing编程时,如果继承jcomponent或者其子类,要覆盖paintcomponent而不是paint方法,这个在sun的教程中有说,jdk源程序中也可以很容易的看出来。