- 浏览: 3119574 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (372)
- diy (4)
- linux (19)
- 杂项 (30)
- Swing (21)
- Java2D (21)
- Java3D (5)
- JavaIO (9)
- Java通讯 (5)
- Java设计模式 (3)
- Java多媒体 (0)
- Java算法 (7)
- Spring&EJB (29)
- Javaoffice (4)
- web前端 (23)
- javascript (1)
- php基础 (1)
- eclipse (3)
- 网站相关 (3)
- Apache (4)
- seo (12)
- db (28)
- server (3)
- api (4)
- 异常 (12)
- 计算机网络词汇表 (3)
- 随想录 (52)
- 收藏 (17)
- 犹太人的智慧 (3)
- 多线程 (1)
- jfreechart (7)
- Test (1)
- SorLib (30)
- ruby on rails (1)
最新评论
-
houyutao:
二三四都是错的空字符串也被匹配,*应该改成+
Java中判断字符串是否为数字的五种方法 -
mingyun:
但是 java.util.ArrayList 实现了 remo ...
java.lang.UnsupportedOperationException 解决方案 -
mingyun:
1.因为 Arrays.asList 返回的是 Arrays内 ...
java.lang.UnsupportedOperationException 解决方案 -
leolu007:
用java8新特性String testStr = " ...
java.lang.UnsupportedOperationException 解决方案 -
zhaohuaxishiwzw:
我之前所在的项目就是日本一家证券公司的项目。完全使用的是j2e ...
抛弃EJB(EJB2.0,EJB3.0,EJB4.0)
Swing显示图片可以有很多的种选择,例如:可以用JLabel和JTable等,通过自己的编程我还是推荐使用JPanel,因为JLable显示图片常常出现内存溢出的问题,我估计JLabel只是将图片以图标的形式显示,所以对内存有一定的限制,如果图片像素过大会出现内存溢出,而JPanel则是将图片“画”在面板上,所以可以使用更大的内存吧。
下面是将图片显示在JPanel的关键方法:
强烈不推荐使用Toolkit.getDefaultToolkit().getImage(imgPath)加载图片。利用这个方法加载图片会出现很多问题,原因我认为就是这个方法是懒加载,并没有把图片真正加载到内存中。
使用下面的两个类时,编译通过后将一副图片命名为1.jpg放在C盘,否则就自己去改代码,很easy的事吧。
下面是具体的代码:
PhotoFrame负责Swing界面的生成。
ZPanel负责加载图片
文章地址:http://javapub.iteye.com/blog/682257
Component有个方法叫prepareImage(Image,ImageOberver)
还有个方法也是预先加载的。忘了。。
我估计JLabel只是将图片以图标的形式显示,所以对内存有一定的限制,如果图片像素过大会出现内存溢出,
多大的图片会溢出??
下面是将图片显示在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)加载图片。利用这个方法加载图片会出现很多问题,原因我认为就是这个方法是懒加载,并没有把图片真正加载到内存中。
使用下面的两个类时,编译通过后将一副图片命名为1.jpg放在C盘,否则就自己去改代码,很easy的事吧。
下面是具体的代码:
PhotoFrame负责Swing界面的生成。
import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.Image; import java.awt.Toolkit; import javax.swing.JFrame; import javax.swing.JScrollPane; public class PhotoFrame extends JFrame { private static final long serialVersionUID = -2216276219179107707L; private Container con; private ZPanel zPanel; private JScrollPane imgSp; private PhotoFrame() { con = getContentPane(); zPanel = new ZPanel(); zPanel.setImagePath("C://1.jpg"); zPanel.setPreferredSize(new Dimension(zPanel.getImgWidth(), zPanel .getImgHeight())); imgSp = new JScrollPane(); imgSp.setViewportView(zPanel); imgSp .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); imgSp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); con.add(imgSp, BorderLayout.CENTER); finalSetting(); } private void finalSetting() { setTitle("ZakiSoft ZFileRenamerV0.2"); Image image = Toolkit.getDefaultToolkit().getImage( this.getClass().getResource("/title.gif")); setIconImage(image); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenHeight = screenSize.height; int screenWidth = screenSize.width; int frameH = getHeight(); int frameW = getWidth(); setLocation((screenWidth - frameW) / 2 - 250, (screenHeight - frameH) / 2 - 250); setSize(500, 350); setVisible(true); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new PhotoFrame(); } }
ZPanel负责加载图片
import java.awt.Graphics; import java.awt.Image; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; public class ZPanel extends javax.swing.JPanel { private static final long serialVersionUID = 1L; private Image image; private int imgWidth; private int imgHeight; public int getImgWidth() { return imgWidth; } public void setImgWidth(int imgWidth) { this.imgWidth = imgWidth; } public int getImgHeight() { return imgHeight; } public void setImgHeight(int imgHeight) { this.imgHeight = imgHeight; } public ZPanel() { } public void setImagePath(String imgPath) { // 该方法不推荐使用,该方法是懒加载,图像并不加载到内存,当拿图像的宽和高时会返回-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)); } @Override public void paintComponent(Graphics g1) { int x = 0; int y = 0; Graphics g = (Graphics) g1; if (null == image) { return; } g.drawImage(image, x, y, image.getWidth(this), image.getHeight(this), this); g = null; } }
文章地址:http://javapub.iteye.com/blog/682257
评论
3 楼
javapub
2010-11-30
我也认为利用BufferedImage image = ImageIO.read加载图片,还是很健壮的。
不过利用Component的prepareImage(Image,ImageOberver) 我认为只要是控件使用图片多少的还是受到一些内存的制约。至少JLabel一定是这样的,JLable在图片尺寸超过2048*2048基本上我这里都是内存溢出的错误,可能也和我的虚拟机内存设的小有关系
不过利用Component的prepareImage(Image,ImageOberver) 我认为只要是控件使用图片多少的还是受到一些内存的制约。至少JLabel一定是这样的,JLable在图片尺寸超过2048*2048基本上我这里都是内存溢出的错误,可能也和我的虚拟机内存设的小有关系
2 楼
sunwenran
2010-11-30
不过我也是用这个方法啦。BufferedImage image = ImageIO.read
1 楼
sunwenran
2010-11-30
引用
强烈不推荐使用Toolkit.getDefaultToolkit().getImage(imgPath)加载图片。利用这个方法加载图片会出现很多问题,原因我认为就是这个方法是懒加载,并没有把图片真正加载到内存中。
Component有个方法叫prepareImage(Image,ImageOberver)
还有个方法也是预先加载的。忘了。。
引用
我估计JLabel只是将图片以图标的形式显示,所以对内存有一定的限制,如果图片像素过大会出现内存溢出,
多大的图片会溢出??
发表评论
-
利用JFrame直接显示JFreeChart的图片
2012-06-12 16:38 5289核心代码就是要将一个JFreeChart 对象,写到Buffe ... -
控件位置可以配置的Swing桌面
2011-01-07 17:48 3039用过Wordpress或者Joomla的朋友一定对他们的灵活的 ... -
jfreechart jar包下载
2010-10-15 10:07 6912jfreechart 是java用于生成图表的开源工具包,网上 ... -
GradientPaint类的作用
2010-10-11 15:35 9849GradientPaint是Java2D中专门用来控制渐变的类 ... -
Swing控件(JPanel,Container等)设置背景图片
2010-09-16 11:07 11868Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片 ... -
Java关于JIT的原理和相关知识
2010-09-13 16:31 7187今天在读java.awt.Toolkit类时,遇到了JIT,代 ... -
Java 2D 学习资料和API
2010-09-13 15:56 6676关键词:Java2D,坐标转换,渲染,坐标系,字体 ... -
Swing特效-渐显效果
2010-09-09 16:04 6259能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的 ... -
利用JFreeChart画坐标及曲线图
2010-09-07 16:54 9569关键词:Swing,JFreeChart,坐标,曲线图 运行以 ... -
Java2D特效 文字旋转
2010-09-03 17:12 2346将图形围绕某点按照给定的角度进行旋转 效果图: 源代码: ... -
Java图像缩放 图片缩放
2010-08-15 12:31 9041图像缩放是我们常常用到的一个操作,原理是数字图像处理的事,这里 ... -
类DirectColorModel的作用
2010-08-13 16:11 2943DirectColorModel 类别是使用像素值的 Colo ... -
Java图像渐变
2010-08-13 16:05 7430图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RB ... -
Java 给图片增加 水印图片 水印文字
2010-07-12 20:49 4311很多时候会用到给图片增加水印,这个时候我推荐利用“光影魔术手” ... -
Java图像变灰 及相关类ColorSpace,ColorConvertOp
2010-06-08 15:49 12663用Java进行图像处理,会遇到ColorSpace这个类:Co ... -
Java图像图片 边缘检测
2010-06-06 20:54 19799对图片进行边缘检测在很多领域是非常重要的,例如:车牌号码的识别 ... -
Java 图像钝化与锐化
2010-06-05 02:08 10325Java图像的钝化和锐化就是一个算法的问题,说白了就是两个方法 ... -
Java图片变亮 变暗
2010-06-05 01:42 4650Java在图片处理领域的功 ... -
Java加载图片 利用Image与BufferedImage
2010-06-04 13:14 50416Image是一个抽象列,BufferedImage是Image ... -
Java将大图片转成小图片
2010-05-14 16:46 7855我们经常会将一个小的图片变成小一些的图片,利用java可以方便 ...
相关推荐
本篇文章将详细讲解如何在Java Swing中读取和显示图片,以及与之相关的知识点。 首先,我们需要了解Java中的图像处理类。`java.awt.Image`类是表示图像的基本类,它提供了加载、显示和操作图像的方法。而`javax....
Swing是Java的标准GUI库,它包含了一个名为`javax.swing.ImageIcon`的类,可以用来加载和显示图片。此外,`JLabel`组件可以用来显示`ImageIcon`,并且`JPanel`或`JFrame`可以作为容器来容纳这些组件,提供图片的...
一共有三层,页面,action和dao层,比较简单不分包了,直接放在在一个包里;还有一些封装,需要的就... 点击下载功能,从数据库中获取二进制流,然后将二进制流转换为图片类型,再在页面层显示; 具体的看各个类;
HoneyViewer图片查看器是一个基于java Swing实现的图片查看器,主要实现了图片展示功能。 本实验手册根据需求完成图片读取...本项目主要包括项目开发环境搭建、图形界面设计、图片显示、图片切换、图片删除功能实现。
6. ImageIcon:Swing中的ImageIcon类用于加载和显示图片。在图片浏览器中,每张图片都会被封装为一个ImageIcon对象,然后显示在JLabel或其他组件上。 7. XML存储浏览记录:项目使用XML作为数据存储格式,XML是一种...
1. **理解Swing组件与图片显示**: - **Swing组件**:Swing是Java提供的一套用于创建图形用户界面(GUI)的应用程序编程接口(API)。它包含了一组轻量级组件,如`JLabel`、`JButton`等。 - **图片显示**:在Swing...
- 图片缩略图:在`JComboBox`中显示图片的缩略图,以便用户能更直观地知道所选图片的内容。 以上就是关于"java swing程序实现点击图片列表改变图片"的核心知识讲解,通过理解和应用这些知识点,开发者可以创建出...
在这个图片浏览器中,可能会用到JFrame作为主窗口,JLabel用来显示图片,JButton用于控制图片的前后切换。 2. **模型-视图-控制器(MVC)模式**:Swing遵循MVC设计模式,将数据(模型)、用户界面(视图)和用户...
Swing提供了丰富的功能,包括允许开发者为这些组件设置自定义的背景图片,以提升应用的视觉效果。这篇博文主要讨论了如何在JPanel和Container上设置背景图片,下面将详细解释这个过程。 首先,我们需要了解JPanel和...
根据图片是否为空决定是否显示图片。 ```java @Override public void paintComponent(Graphics g) { super.paintComponent(g); if (img != null) { Util.paintImg(this, g, img); } } ``` - **图片加载**:...
利用swing组件来显示系统文件的目录树,不使用JFileChooser类。
核心类可能包括一个`ImagePanel`,它继承自`JPanel`,并重写`paintComponent`方法以显示图片。在这个方法中,开发者会使用`Graphics2D`对象绘制图片,确保图片适配面板大小,可能还会包含平滑缩放功能以提高用户体验...
网上很多关于Java创建透明图片的例子,但我试过之后都不好使。这个短短几行代码,就可以实现,只是一个方法,直接调用就可以。
为了正确显示图片,需要重写`paintComponent`方法。 - 在`paintComponent`方法中,首先调用`super.paintComponent(g)`以确保默认的绘制行为正常执行。 - 根据图片是否为空,决定是否绘制图片。例如,如果`image`...
- `JPanel`:可以作为容器,用于组织和管理其他组件,例如在此案例中,可能会有一个专门的JPanel用于显示图片。 - `JButton`:用户可以通过按钮进行操作,比如打开、上一张、下一张、放大、缩小等。 - `JLabel`:...
5. **显示组件**:将包含倒影的组件添加到Swing的容器,如`JFrame`,并设置适当的布局管理器,以展示图片及其倒影。 从标签“源码”我们可以推测,可能有具体的代码示例提供,通过阅读博文(链接已给出)可以获取...
JLabel可能被用来显示图片,因为它可以承载ImageIcon对象。 2. **ImageIcon和Image类**:在Java中,Image类代表图像,而ImageIcon是将Image对象包装成可以在GUI中显示的图标。图片查看器会使用这两个类来加载和显示...
2. 解析Word文档的内容,包括文本、图片、样式等。 3. 创建iText PDF文档对象,初始化页面设置和样式。 4. 将Word内容逐段或逐页转换为PDF元素,添加到PDF文档中。 5. 保存生成的PDF文件。 6. 在Swing GUI中提供反馈...
对于初学者来说,这还是不错的资源,这个源程序实现在面板中加载一些图片,还是不错的啊!!!
3. **JLabel**: JLabel通常用于显示文本或图像,这在图片相册应用中至关重要,因为它可以用来显示图片。 4. **ImageIcon**: 这个类允许我们加载和显示图片,它与JLabel结合使用,可以在用户界面上展示图片。 5. **...