首先先吐槽一下用JAVA做界面的辛苦,往面板里绘制东西要获取他的Graphics,可往往要往里面画的类是别的类,然后你往里面画的时候…..坑就出来了。
Swing组件绘制的原理
组件在初始画的时候会调用组件本身自带的paint()和paintComponent(),绘制出他想要的样子,如果你单纯想改变他的形状和样子时,就可以重写paint()或者paintComponent来达成。不过要注意,在Swing的原始组件中的paint()会调用paintComponent(),假如你想在paint()里绘制某个图像,paintComponent中绘制另一个()并且不想两个图像混在一起。看下列实例
以JPanel为例
public class MyPanel extends JPanel{
@Override
protected void paintComponent (Graphics g) {
super.paintComponent(g);
System.out.println("component");
}
@Override
public void paint (Graphics g) {
super.paint(g);
System.out.println("paint");
}
public static void main(String [] ars){