第一种:将图片导入到label上显示:
1: Toolkit.getDefaultToolkit().getImage(name):name为图片的路径。支持gif ,JPEG or PNG.格式的图片
2:将Image转化为ImageIcon 并设置到Label上:label.setIcon(new ImageIcon(image));
第二种:将远程的图片显示在本地.加载到panel上
1: url = new URL(urlstr); 创建url
2: Image image = fr.getToolkit().getImage(url);
MediaTracker tracker = new MediaTracker(fr);
tracker.addImage(image, 0);
try {
tracker.waitForID(0);
}
catch (InterruptedException ie) {}
将图片加载到本地。通过tracker进行加载.
3:继承paintComponent
if (image != null) {
g2d.drawImage(image, 0, 0, this);
}
将图片加载到panel上
第三种:就爱你过远程图片显示在本地,加载到panel上
1: url = new URL(urlstr);
2: ImageIcon icon = new ImageIcon(url); 包含traker机制
3:icon.getImage() 获得Image
4:通过paintComponent加载到panel上,代码如第二种方案[size=xx-small][/size][align=center][/align]
第四种:通过加载本地图片到Panel上
1: File file = new File("图片路径")
2: Image readImage = ImageIO.read(file);
3:作图到Panel上。显示如第三中的4步骤
Swing显示图片可以有很多的种选择,例如:可以用JLabel和JTable等,通过自己的编程我还是推荐使用JPanel,因为JLable显示图片常常出现内存溢出的问题,我估计JLabel只是将图片以图标的形式显示,所以对内存有一定的限制,如果图片像素过大会出现内存溢出,而JPanel则是将图片“画”在面板上,所以可以使用更大的内存吧。
下面是将图片显示在JPanel的关键方法:
- // 该方法不推荐使用,该方法是懒加载,图像并不加载到内存,当拿图像的宽和高时会返回-1;
- // image = Toolkit.getDefaultToolkit().getImage(imgPath);
- try {
- // 该方法会将图像加载到内存,从而拿到图像的详细信息。
- image = ImageIO.read(new FileInputStream(imgPath));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- setImgWidth(image.getWidth(this));
- setImgHeight(image.getHeight(this));
强烈不推荐使用Toolkit.getDefaultToolkit().getImage(imgPath)加载图片。利用这个方法加载图片会出现很多问题,原因我认为就是这个方法是懒加载,并没有把图片真正加载到内存中。