java组件重绘

Python013

java组件重绘,第1张

覆盖组件的paingComponent(Graphics g)方法

比如一个JPanel组件

class MyPanel extends JPanel{

public void paintComponent(Graphics g){

super.paintComponent(g)//这一步一定要写 这步把组件的基本外貌画出来了

g.drawRect(1,1,20,10)// 这步就是在JPanel基础上画了一个宽20,高10的矩形

}

}

1、这个方法需要注意的地方不多,也就是重写时,先调用 super.paint(g) 方法 。paint方法不需要编写代码调用,只需要重写。

2、paint 。public void paint(Graphics g)绘制容器。该方法将 paint 转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g) 方法,从而可以正确地呈现轻量级组件。如果通过 g 中的当前剪切设置完全剪切某个子组件,则不会将 paint() 转发给这个子组件。

3、调用paint的一般是repaint()或当显示器刷新的时候调用的类似repaint()的类。 当对于桌面执行了某类操作,改变了桌面上的图象时,jvm收到界面被调整的信息,此时会调用visible是ture的图形组件的repaint()方法对界面重绘。

4、当然,直接重绘或全部重绘是很亏的,一个是用双缓存技术,另一个是只对桌面上显示的部分重绘。双缓存是指在缓存内先模拟重绘过程,只把最后成形的结果传给显示器显示。

paint表示实参个数可变。比如:private static int sumUp(int... values) {//表示传入sumUp的整数个数不确定,values是一个长度不确定的int数组,根据传入的参数确定长度