import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImageFrame extends JFrame
{
public ImageFrame()
{
this.setTitle("图像");
this.setSize(500, 600);
this.getContentPane().add(new ImagePanel());
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent windowEvent)
{
System.exit(0);
}
});
} public static void main(String[] args)
{
ImageFrame iFrm = new ImageFrame(); iFrm.show();
}
}public class ImagePanel extends JPanel
{
public void paintComponent(Graphics g)
{
String name = "e:\\Vivian.jpg";
Image img = Toolkit.getDefaultToolkit().getImage(name); g.drawImage(img, 10, 10, null);
}
}
为什么运行时没有显示图片呢???..要调整一下窗口大小,就显示了.能不能一运行就能显示图片呢??
import java.awt.event.*;
import javax.swing.*;
public class ImageFrame extends JFrame
{
public ImageFrame()
{
this.setTitle("图像");
this.setSize(500, 600);
this.getContentPane().add(new ImagePanel());
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent windowEvent)
{
System.exit(0);
}
});
} public static void main(String[] args)
{
ImageFrame iFrm = new ImageFrame(); iFrm.show();
}
}public class ImagePanel extends JPanel
{
public void paintComponent(Graphics g)
{
String name = "e:\\Vivian.jpg";
Image img = Toolkit.getDefaultToolkit().getImage(name); g.drawImage(img, 10, 10, null);
}
}
为什么运行时没有显示图片呢???..要调整一下窗口大小,就显示了.能不能一运行就能显示图片呢??
解决方案 »
- java 源码问题 SinglePixelPackedSampleModel类
- JAVA中将窗体最小化到系统托盘
- java编程问题!请前辈帮忙?
- 写出的发mail程序,只能在163里面发,为什么?
- 分页显示问题
- ====》菜鸟问问题罗:non-static method this cannot be referenced from a static context
- 我的setDefaultClouseOperation()错在哪?
- 关于Timer或者是多线程实现延时的问题
- 求高手指教 内存中找对象java行吗???
- 怎样使一个frame的关闭按钮灰掉?
- 数据库编程
- 今天结贴100分 我想用JTable中直接更改数据库信息 高手指点明招!
后来你好解决了,
我还写了个图片浏览器.
paintComponent()
是在有事件发生时重绘.
也有可能是图片正在加载,
你试一下MediaTracker.
g.drawImage(img, 10, 10, null);
后面加上调用validate方法的语句, 不是 this.validate() 就是 g.validate(), 自己试试吧。
我以前也遇到过,
后来你好解决了,
我还写了个图片浏览器.
paintComponent()
是在有事件发生时重绘.
也有可能是图片正在加载,
你试一下MediaTracker.
这个我不会用~~...
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImageFrame extends JFrame
{
public ImageFrame()
{
this.setTitle("图像");
this.setSize(500, 600);
ImagePanel ip = new ImagePanel();
this.getContentPane().add(ip);
ip.revalidate();
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent windowEvent)
{
System.exit(0);
}
});
} public static void main(String[] args)
{
ImageFrame iFrm = new ImageFrame(); iFrm.setVisible(true);
}
}class ImagePanel extends JPanel
{
public void paintComponent(Graphics g)
{
String name = "e:\\a.jpg";
Image img = Toolkit.getDefaultToolkit().getImage(name); g.drawImage(img, 10, 10, null);
this.updateUI();
}
}
{
super.paintComponent(g);//重写父类
String name = "e:\\a.jpg";
Image img = Toolkit.getDefaultToolkit().getImage(name); g.drawImage(img, 10, 10, null);
this.updateUI();
}
Image img = Toolkit.getDefaultToolkit().getImage(name);
加载图像,这样图像是被异步加载的,解决方法参考:AWT 中加载和显示图像的方法
http://www.blogjava.net/leon/archive/2005/07/12/7532.htmlAWT 中图像的异步加载和等待图像的完全加载
http://www.blogjava.net/leon/archive/2005/07/12/7533.html
或者直接使用ImageIO:BufferedImage image = null;
try{
image = ImageIO.read(new File("c:\\temp.jpg"));
}catch(IOException e){}
import java.awt.event.*;
import javax.swing.*;
public class ImageFrame extends JFrame
{
public ImageFrame()
{
this.setTitle("图像");
this.setSize(500, 600);
this.getContentPane().add(new ImagePanel());
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent windowEvent)
{
System.exit(0);
}
});
} public static void main(String[] args)
{
ImageFrame iFrm = new ImageFrame(); iFrm.show();
}
}public class ImagePanel extends JPanel
{
public void paintComponent(Graphics g)
{
String name = "e:\\Vivian.jpg";
Image img = Toolkit.getDefaultToolkit().getImage(name);
MediaTracker media = new MediaTracker(this); media.addImage(img, 0); try
{
media.waitForID(0);
}
catch (InterruptedException e)
{
System.out.println(e);
}
g.drawImage(img, 10, 10, null);
}
}
谢谢!!