在JPanel上画图时为何paint()方法会被多次调用?
代码如下:
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class InfoPanel extends JPanel
{
private Image img = Toolkit.getDefaultToolkit().getImage(
InfoPanel.class.getResource("about.jpg"));
private int count = 0;
public InfoPanel()
{
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(img,0,0,this.getWidth(),this.getHeight(),this);
count ++;
System.out.println(count);
}
public static void main(String[] args){
JFrame f = new JFrame();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.setSize(400,200);
InfoPanel info = new InfoPanel();
f.getContentPane().add(info);
f.setVisible(true);
}
}
运行结果:
1
2
3
4
......
301
302
说明paint方法被多次调用,为什么?这样图片需要很长时间才能显示,怎样让图片立即显示?
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class InfoPanel extends JPanel
{
private Image img = Toolkit.getDefaultToolkit().getImage(
InfoPanel.class.getResource("about.jpg"));
private int count = 0;
public InfoPanel()
{
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(img,0,0,this.getWidth(),this.getHeight(),this);
count ++;
System.out.println(count);
}
public static void main(String[] args){
JFrame f = new JFrame();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.setSize(400,200);
InfoPanel info = new InfoPanel();
f.getContentPane().add(info);
f.setVisible(true);
}
}
运行结果:
1
2
3
4
......
301
302
说明paint方法被多次调用,为什么?这样图片需要很长时间才能显示,怎样让图片立即显示?
...全文
相关推荐
最新java画图程序
欢迎下载java画图程序,本代码非常适合初学者使用,本代码有不足的地方请大指教。
Java中Graphics的paint和repaint方法.pdf
Java中Graphics的paint和repaint方法.pdf 学习资料 复习资料 教学资源
基于java applet的简易画图程序
基于java applet的简易画图程序,简单易用,有助于理解java事件侦听响应的相关知识。
java-paint.rar_java paint_paint_paint java_绘图_绘图程序 java
在java下实现的绘图程序,功能比较全面,想交java作业足够啦。 我就不信,我GF自己编的都能重复!
paint
paint


Java SE
