(转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小
一、问题:
一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小, 所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件
二、解决这个问题,需要用到两个类:
Java.awt.Image类 javax.swing.ImageIcon类
1.java.awt.Image是个抽象类,这个过程中用到的参数和函数如下: (1)static int SCALE_DEFAULT 表示默认的图像缩放算法。 (2)public Image getScaledInstance(int width,int height,int hints) 创建此图像的缩放版本。返回一个新的 Image 对象,默认情况下,该对象按指定的 width 和 height 呈现图像。即使已经完全加载了初始源图像,新的 Image 对象也可以被异步加载。 如果 width 或 height 为负数,则替换该值以维持初始图像尺寸的高宽比。如果 width 和 height 都为负,则使用初始图像尺寸。
参数: width - 将图像缩放到的宽度。 height - 将图像缩放到的高度。 hints - 指示用于图像重新取样的算法类型的标志。 返回: 图像的缩放版本。
2.javax.swing.ImageIcon类 (1)这儿用到这个构造函数: ImageIcon(String filename) 根据指定的文件创建一个 ImageIcon对象 (2)Image getImage() 返回此图标的 Image。 (3)void setImage(Image image) 设置由此图标显示的图像。
三、关键性代码
- JLabel jlb = new JLabel(); //实例化JLble
- int width = 50,height = 50; //这是图片和JLable的宽度和高度
- ImageIcon image = new ImageIcon("image/img1.jpg");//实例化ImageIcon 对象
- /*下面这句意思是:得到此图标的 Image(image.getImage());
- 在此基础上创建它的缩放版本,缩放版本的宽度,高度与JLble一致(getScaledInstance(width, height,Image.SCALE_DEFAULT ))
- 最后该图像就设置为得到的缩放版本(image.setImage)
- */
- image.setImage(image.getImage().getScaledInstance(width, height,Image.SCALE_DEFAULT ));//可以用下面三句代码来代替
- //Image img = image.getImage();
- //img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
- //image.setImage(img);
- jlb.setIcon(image);
- jlb.setSize(width, height);
四、程序实例
- /*java中设置图片自适应Jlable的大小*/
- package test1;
- import javax.swing.*;
- import java.awt.Image;
- public class ImageSetTest extends JFrame {
- private JLabel jlb = new JLabel();
- private ImageIcon image;
- private int width = 400, height = 400;
- public ImageSetTest() {
- this.setSize(800, 600);
- this.setLayout(null);
- image = new ImageIcon("image/img1.jpg");
- // image.setImage(image.getImage().getScaledInstance(width, height,Image.SCALE_DEFAULT));
- Image img = image.getImage();
- img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
- image.setImage(img);
- jlb.setIcon(image);
- this.add(jlb);
- jlb.setSize(width, height);
- this.setVisible(true);
- }
- public static void main(String[] args) {
- new ImageSetTest();
- }
- }
(转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小的更多相关文章
- 解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移
解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移 解决办法1:设置tabBarItem的imageInsets属性 代码示例: childContro ...
- java中如何把图片转换成二进制流的代码
在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...
- Android代码中动态设置图片的大小(自动缩放),位置
项目中需要用到在代码中动态调整图片的位置和设置图片大小,能自动缩放图片,用ImageView控件,具体做法如下: 1.布局文件 <RelativeLayout xmlns:android=&qu ...
- java中如何设置下载文件
如果想要设置某一url为下载文件的方法如下 需要设置文件响应类型,使用response.setContentType,比如jpeg格式的图片.如果想要访问该页面时出现下载保存的窗口,使用respons ...
- JAVA中pdf转图片的方法
JAVA中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用. 一.icepdf.有收费版和开源版,几种方法里最推荐的.转换的效果比较好,能识别我手头文件中的中文, ...
- Java中权限设置
package think_in_java_access_contorl; import think_in_java_access_contorl.access.Cookie; /** * 1.在Ja ...
- Java Swing 如何设置图片大小
如下两行代码搞定: Image image = new ImageIcon("Img/ackground.jpg").getImage();// 这是背景图片 .png .jpg ...
- java中网络设置代理
三种方式: 1.JVM启动时加参数设置代理 在系统启动时,使用-D项来设置代理. 例如: java -Dhttp.ProxyHost="proxyUrl" -Dhttp.Proxy ...
- java 中 SVN 设置所有文件及子目录 needs-lock, svn 提交时自动设置 needs-lock, 及版本不一致问题
摘自: http://my.oschina.net/zhangzhihao/blog/72177 设置后的效果:文件会自动带上svn:needs-lock属性,默认是只读的要签出才能修改以防止修改完后 ...
随机推荐
- asp.net core输出中文乱码的问题
摘要 在学习asp.net core的时候,尝试在控制台,或者页面上输出中文,会出现乱码的问题. 问题重现 新建控制台和站点 public class Program { public static ...
- 5天揭秘js高级技术-第一天
一.基础杂记 1. document.write() <script type="text/javascript"> document.write('<h2> ...
- 移动端开发概览【webview和touch事件】
作为一个前端,而且作为一个做移动端开发的前端,那意味着你要有三头六臂,跟iOS开发哥哥一起打酱油,跟Android开发哥哥一起修bug... Android vs Ios 我在webkit内核的chr ...
- 多材质(Shader)实现
最近在cocos creator上打算写个U3D中shader功能的插件(能在属性面板调整shader属性). 对其中一个功能有点疑惑,就是U3D中一个渲染物体上可以挂多个材质,后来查询了下,一个物体 ...
- String字符串针对常量池的优化
String对象是java语言中重要的数据类型,但是不是基本数据类型.相对于c语言的char java做了一些封装和延伸. 针对常量池的优化:当两个String拥有相同的值时,它们只引用常量池中的同一 ...
- 用RMAN备份EBS数据库的脚本
rman_bak.sh rman target / nocatalog log=/d01/rmanbak/bak_`date +%m%d%H%M`.log<< EOF run { c ...
- Javascript设计模式学习三(策略模式)
定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换.目的:将算法的使用和算法的实现分离开来.比如: if(input == 'A'){ return 1; } if(input == ...
- http://www.microsoft.com/en-pk/download/details.aspx?id=40762
http://www.microsoft.com/en-pk/download/details.aspx?id=40762
- BZOJ 2081: [Poi2010]Beads
Description 问把n截成每个长度后不同子串个数. Sol 调和极数+Hash. 首先这是一个式子 \(n\sum_{i=1}^n \frac {1}{i}\) . 这东西就是调和极数再乘上 ...
- python3 黑板客爬虫闯关游戏(三)
第三关,先登录,再猜密码,这关难度较第二关大幅增加,要先去注册一个登录账号,然后打开F12,多登录几次,观察headers数据的变化 给出代码,里面注释很详细 import urllib.reques ...