鼠标画线条小程序

好像把第18、19行注释掉

然后再加上add(panel);

也能得到相同的结果啊!

求知道的人解释下!


与AWT组件不同,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(content pane)上。
内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件。
基本规则如下:
1、把Swing组件放入一个顶层Swing容器的内容面板上
2、避免使用非Swing的重量级组件。

super.paintComponent()这一句是调用了父类的方法,每次重绘(repaint())的时候,程序就会调用到自身的paintComponent()方法(它覆盖了父类的同名方法),这个程序在paintComponent方法中第一行就先调用了super.paintComponent进行界面重绘,那么就由父类先进行界面重绘(一般是恢复原状),父类重绘完之后,界面就恢复到某个界面,这时候才调用drawLine画出一条线。
在JDK中查到paintComponent()有"如果不调用超类的实现,则必须遵守不透明属性,也就是说,如果此组件是不透明的,则必须以透明的颜色完全填充背景。如果不遵守不透明属性,则很可能看到可视的人为内容。"
如果注释掉super.paintComponent()的话,那么这个类本身已经覆盖掉它的父类的paintComponent方法,
所以不会执行到它,界面需要重绘的时候,只是执行了drawLine方法(进行重绘)。

你可能感兴趣的:(程序)