- 浏览: 3099214 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 5238核心代码就是要将一个JFreeChart 对象,写到Buffe ... -
控件位置可以配置的Swing桌面
2011-01-07 17:48 2991用过Wordpress或者Joomla的朋友一定对他们的灵活的 ... -
jfreechart jar包下载
2010-10-15 10:07 6866jfreechart 是java用于生成图表的开源工具包,网上 ... -
GradientPaint类的作用
2010-10-11 15:35 9784GradientPaint是Java2D中专门用来控制渐变的类 ... -
Swing控件(JPanel,Container等)设置背景图片
2010-09-16 11:07 11794Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片 ... -
Java关于JIT的原理和相关知识
2010-09-13 16:31 7114今天在读java.awt.Toolkit类时,遇到了JIT,代 ... -
Java 2D 学习资料和API
2010-09-13 15:56 6626关键词:Java2D,坐标转换,渲染,坐标系,字体 ... -
Swing特效-渐显效果
2010-09-09 16:04 6203能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的 ... -
利用JFreeChart画坐标及曲线图
2010-09-07 16:54 9470关键词:Swing,JFreeChart,坐标,曲线图 运行以 ... -
Java2D特效 文字旋转
2010-09-03 17:12 2296将图形围绕某点按照给定的角度进行旋转 效果图: 源代码: ... -
Java图像缩放 图片缩放
2010-08-15 12:31 8983图像缩放是我们常常用到的一个操作,原理是数字图像处理的事,这里 ... -
类DirectColorModel的作用
2010-08-13 16:11 2895DirectColorModel 类别是使用像素值的 Colo ... -
Java图像渐变
2010-08-13 16:05 7357图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RB ... -
Java 给图片增加 水印图片 水印文字
2010-07-12 20:49 4247很多时候会用到给图片增加水印,这个时候我推荐利用“光影魔术手” ... -
Java图像变灰 及相关类ColorSpace,ColorConvertOp
2010-06-08 15:49 12575用Java进行图像处理,会遇到ColorSpace这个类:Co ... -
Java图像图片 边缘检测
2010-06-06 20:54 19728对图片进行边缘检测在很多领域是非常重要的,例如:车牌号码的识别 ... -
Java 图像钝化与锐化
2010-06-05 02:08 10209Java图像的钝化和锐化就是一个算法的问题,说白了就是两个方法 ... -
Java图片变亮 变暗
2010-06-05 01:42 4588Java在图片处理领域的功 ... -
Java加载图片 利用Image与BufferedImage
2010-06-04 13:14 50313Image是一个抽象列,BufferedImage是Image ... -
Java将大图片转成小图片
2010-05-14 16:46 7783我们经常会将一个小的图片变成小一些的图片,利用java可以方便 ...
相关推荐
一共有三层,页面,action和dao层,比较简单不分包了,直接放在在一个包里;还有一些封装,需要的就... 点击下载功能,从数据库中获取二进制流,然后将二进制流转换为图片类型,再在页面层显示; 具体的看各个类;
单独放大缩小图片和移动图片的很多,很难找到能缩放和移动一起实现的例子。由于项目的需要就自己写了个java实现图片放大(以视图中心放大)、缩小、移动、鼠标拖移。
HoneyViewer图片查看器是一个基于java Swing实现的图片查看器,主要实现了图片展示功能。 本实验手册根据需求完成图片读取...本项目主要包括项目开发环境搭建、图形界面设计、图片显示、图片切换、图片删除功能实现。
利用swing组件来显示系统文件的目录树,不使用JFileChooser类。
网上很多关于Java创建透明图片的例子,但我试过之后都不好使。这个短短几行代码,就可以实现,只是一个方法,直接调用就可以。
java-swing编程(一个简单的图片查看器).
对于初学者来说,这还是不错的资源,这个源程序实现在面板中加载一些图片,还是不错的啊!!!
Swing展示的文件系统树,比较好地说明了JTree
主要介绍了Java Swing实现窗体添加背景图片的2种方法,结合实例形式较为详细的分析了Swing实现窗体添加背景图片的方法,并总结分析了Swing重绘中repaint与updateUI的区别,需要的朋友可以参考下
这是一个在swing工程中用于显示图片的类,可以直接将它设置为自定义组件,我是用来显示头像的,呵呵!非常实用!是从李宁老师的《独门架构 Java Web开发应用详解》随书光盘中的视频里看到了,但没有看到全部,我稍微...
打造半透明只Swing 淡入淡出式显示Swing容器组件 模拟下雪的透明面板 倾情奉献,让又需要的朋友一次下完 (O(∩_∩)O哈!上传也麻烦啊)
描述 类似于Paint的应用程序,它带有编写的一些功能强大的过滤器。 该程序是我在2013年底完成的第一个大型项目,因此实施并不完美。 APP在行动 安装 最简单的方法是包含的可运行jar并运行它。 或者,您可以克隆存储...
这是使用java Swing开发的一个抽奖小系统,可以导入图片、人员名单,抽取三等奖、二等奖、一等奖,显示所有中奖名单,导出名单等功能.里面有个使用的说明文档,导入后可以直接运行
Java中基于UDP的图像传输与显示(Swing界面) Java中基于UDP的图像传输与显示(Swing界面)
java swing 调用webcam 显示全屏视频图像,支持接收Socket指令拍照无卡顿、无设备占用冲突、支持配置端口配置图片保存地址、支持切换窗口模式、视频图像始终前置模式,避免弹窗影响、支持图片旋转角度调整、支持开机...
添加组件后,在组件上添加图片 1.设置Table的Model这个需要重写AbstractTableModel类, 2.设置Table的DefaultRenderer,这个根据个人需要选择将要添加到Table的cell里的 组件(JButton,JLable...)继承相应的组件...
该系统主要运用swing相关组件、面板进行布局,左侧是日历界面,右侧是背景图片显示界面。日历可以按年、月进行前后翻动;使用鼠标点击左侧进行日期选择,右边可通过下拉栏对选择的日期进行背景图片的设置。
Java(Swing)拼图游戏局域网对战版(Java1.6) ...4. 右半部上面显示图片预览,下半部显示玩家姓名,进度,状态等 5. 使用一次提示,需要等一分钟才能继续使用下一次 源代码: http://download.csdn.net/source/2335810
使用Java swing 技术读取.raw格式的图片文件并显示
// 在屏幕中居中显示 frame.add(this.panel); // 添加面板 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置X号后关闭 //设置按钮 this.registerButton.addActionListener(this); //注册按钮 ...