关于JLabel的图片自适应
2015-05-04 23:35
183 查看
好烦!又折腾了一下午,JLabel好讨厌!
众所周知,JLabel会根据添加的文字长度或者图片长度设置大小。在布局为null的组件里,可以使用setPreferredSize(Dimension)来设置其大小,可是我使用了该方法却无效。debug的时候,经过了该语句,JLabel长宽却一点变化都没有。
我程序的问题在于:我想要做一个剪切图片的效果,带有undo和redo。但是剪小了在JLabel显示出来了以后,想要undo,去看之前大的图像却发现只剩下被剪小的这一块了。于是debug,发现这时候的图片长度是没错的,是原来的大小,只不过JLabel的长度太小了,无法显示全部,所以看起来跟没有undo一样,只是改变了一下位置而已。
我改变JLabel里的图片的代码是这样写的,lbImage.setIcon(new ImageIcon(a));其中lbImage是 JLabel,a是BufferedImage。debug经过这里时,果然JLabel的大小没被改变,但是奇怪的是,之前重新显示新的变小的图片,debug经过那里时,JLabel的大小却跟着图片缩小了!于是我去研究了一下让图片变小的方法。发现该方法把之前JLabel里的image给替换成新的image了,然后再用该image来进行setIcon方法。在替换的那一步,JLabel的大小变大了!!于是总结如下:
在JLabel里进行不同大小图片的交替显示时,必须修改或替换掉之前的Image,而不是新建一个new ImageIcon(),否则大小不会变化!
JLabel为什么这么奇葩??
众所周知,JLabel会根据添加的文字长度或者图片长度设置大小。在布局为null的组件里,可以使用setPreferredSize(Dimension)来设置其大小,可是我使用了该方法却无效。debug的时候,经过了该语句,JLabel长宽却一点变化都没有。
我程序的问题在于:我想要做一个剪切图片的效果,带有undo和redo。但是剪小了在JLabel显示出来了以后,想要undo,去看之前大的图像却发现只剩下被剪小的这一块了。于是debug,发现这时候的图片长度是没错的,是原来的大小,只不过JLabel的长度太小了,无法显示全部,所以看起来跟没有undo一样,只是改变了一下位置而已。
我改变JLabel里的图片的代码是这样写的,lbImage.setIcon(new ImageIcon(a));其中lbImage是 JLabel,a是BufferedImage。debug经过这里时,果然JLabel的大小没被改变,但是奇怪的是,之前重新显示新的变小的图片,debug经过那里时,JLabel的大小却跟着图片缩小了!于是我去研究了一下让图片变小的方法。发现该方法把之前JLabel里的image给替换成新的image了,然后再用该image来进行setIcon方法。在替换的那一步,JLabel的大小变大了!!于是总结如下:
在JLabel里进行不同大小图片的交替显示时,必须修改或替换掉之前的Image,而不是新建一个new ImageIcon(),否则大小不会变化!
JLabel为什么这么奇葩??
相关文章推荐
- JAVA中关于向JLabel里面添加图片的方法例子
- JLabel 显示图片并自适应控件大小
- 关于ueditor上传图片后拖动图片自动添加style样式 手机端不能自适应问题
- 关于 UITableView 中 网络获取图片 cell 自适应高度的问题
- 关于自定义card时的图片自适应.(inflate的理解)
- 关于百度编辑器中图片手机端自适应、微信jssdk当前页链接
- 关于百度编辑器中图片手机端自适应、微信jssdk当前页链接、setinterval用法
- 关于图片按比例自适应缩放
- 关于Android沉浸式状态栏字体颜色和图片背景自适应变化
- 关于图片按比例自适应缩放
- 关于Android WebView显示html网页图片无法自适应(PS第一次写博客)
- 关于图片按比例自适应缩放的js代码
- 关于IE背景图片显示100%(背景图片自动伸缩 自适应)
- 图片自适应
- maven关于jsp页面加载图片和css路径的问题
- 关于清除Windows系统桌面图片蓝底的几种方法
- 关于c#的OpenFileDialog,同时选择多个图片,同时可以翻页预览
- 纯css 图片自适应居中
- 关于css图片按钮在IE6下无法显示的问题