JAVA:这段程序为什么frame中不显示图片

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:02:34
这段程序为什么frame中不显示图片,而在e.drawImage(im,0,0,50,50,f);这句前加上while(true);又可以显示,但是会很占cpu,应该怎么改?

import java.awt.*;
import java.awt.event.*;
public class Test{
Frame f;
public static void main(String args[]){
Test b=new Test();
b.go();
}
public void go() {
Frame f=new Frame();
Image im=f.getToolkit().getImage("nana.jpg");
f.setSize(585,300);
f.setVisible(true);
Graphics e=f.getGraphics();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
e.drawImage(im,0,0,50,50,f);
} }
忘了说,nana.jpg我已经放在class目录中了,而且加了while(true)后图片就可以显示了,我觉得不是路径的问题。
baijunyuan511说的改法我试过了,照样是不显示。
k3498gg说的我明白点了,但是我是一运行程序的时候就根本不显示,而不是最小化以后才不显示的,好像一次也没画似的。

java的绘图机制是调用updata();方法,在一个线程中要保持不停的刷屏才会不断的现实,一段你最小化后图片就不会再显示,因为你只在画了一次,当你最小化再打开的时候还要再重画才能显示,你可以放到一个Thread中去,如果用while(true)当然是cpu一直不停的工作,所以cpu占用率高。。。

查看 你的 f.getToolkit().getImage("nana.jpg"); //一般的路径从 src/开始

import java.awt.*;
import java.awt.event.*;

public class Test {

public Test() {
}
Frame f;
public static void main(String args[]){
Test b=new Test();
b.go();
}
public void go() {
Frame f=new Frame();
Image im=f.getToolkit().getImage("F:\\photo\\壁纸\\白雪树.jpg");
f.setSize(585,300);
f.setVisible(true);
Graphics e=f.getGraphics();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
while(f.getFocusableWindowState()){
e.drawImage(im,0,0,50,50,f);
}