在java部分需要用到图形界面编程的项目中,经常会使用图片设置对按钮进行美化,但是使用时会出现一个很麻烦的问题,那就是按钮的大小默认按照图片的大小来显示,这大大降低了界面的美观程度;

按照方法:

JButton jb1 = new JButton();
jb1.setBounds(0, 0, 25, 20);
ImageIcon ii = new ImageIcon("images/xxx.png");
jb1.setIcon(ii);

但是,在修改完按钮的大小后,按钮还是没有改变,这是因为我是对图片没有进行缩放

所以,修改为以下:

JButton jb1 = new JButton();
jb1.setBounds(0, 0, 25, 20);
ImageIcon ii = new ImageIcon("images/xxx.png");
//根据按钮大小改变图片大小
Image temp = ii.getImage().getScaledInstance(jb1.getWidth(), jb1.getHeight(), ii.getImage().SCALE_DEFAULT);
ii = new ImageIcon(temp);
jb1.setIcon(ii);
jb1.setToolTipText("image");

修改为以上方法后,确实可以了,但是我上面有6个按钮需要修该,难不成要一个一个该?那要是有100个我改咋办?

这是我们就需要对以上的模块进行封装;(我的类是:GUITools )

package cn.cetc.util;//可修改为自定的包名

import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URL; import javax.swing.ImageIcon;
import javax.swing.JButton; public class GUITools {
//将Icon图标按照JButton对象的边界大小进行缩放,并返回JButton对象
public static JButton getButtonWithScaledIcon(URL resource,int width,int height,String tip){
JButton button=new JButton();
button.setBounds(0,0,width,height);
button.setPreferredSize(new Dimension(width,height));
ImageIcon buttonImgSrc=new ImageIcon(resource);//载入原始大小的图像
Image temp=buttonImgSrc.getImage().getScaledInstance(button.getWidth(), button.getHeight(), Image.SCALE_DEFAULT);//改变图像的大小
ImageIcon scaledImageIcon = new ImageIcon(temp);
button.setIcon(scaledImageIcon);//大多数组件的setIcon方法只接受ImageIcon类型的参数,并且Java组件类只有这一个方法用来设置图片。JFrame组件有方法setIconImage( Image image)接受Image类型的参数
button.setToolTipText(tip);//JButton的提示信息
button.setBorderPainted(false);
button.setContentAreaFilled(false);//初始化时不绘制内容区域,使显示为透明的按钮
// 效果增强代码:用于处理鼠标进入或离开工具条按钮时的效果
button.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
if (e.getSource() instanceof JButton) {
((JButton) e.getSource()).setContentAreaFilled(true);
}
} public void mouseExited(MouseEvent e) {
if (e.getSource() instanceof JButton) {
((JButton) e.getSource()).setContentAreaFilled(false);//设置 contentareafilled 属性。如果该属性为 true,则按钮将绘制内容区域。如果希望有一个透明的按钮,比如只是一个图标的按钮,那么应该将此属性设置为 false。不要调用 setopaque(false)。contentareafilled 属性的默认值为 true。
}
}
}); return button;
}
}

因为这里我的六个按钮是要同样大小的,我就将其大小设为静态常量,通过此来改变按钮的大小

调用如下:

        //创建登录按钮
URL resource = this.getClass().getResource("/img/login.png");
final JButton loginButton = GUITools.getButtonWithScaledIcon(resource, 64, 64, "登录");

最终效果:

当然大家可以将之前的模块放在你自己工具类中,这样方便以后调用。

原文链接:java中带图片按钮的大小设置

[转]java中带图片按钮的大小设置的更多相关文章

  1. java中带图片按钮的大小设置

    在java部分需要用到图形界面编程的项目中,经常会使用图片设置对按钮进行美化,但是使用时会出现一个很麻烦的问题,那就是按钮的大小默认按照图片的大小来显示,这大大降低了界面的美观程度: 按照方法: JB ...

  2. java中得到图片的宽度 高度:

    java中得到图片的宽度 高度:BufferedImage srcImage = null;srcImage = ImageIO.read(new File(srcImagePath));int sr ...

  3. Java中带包(创建及引用)的类的编译

    Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.jav ...

  4. CSS中对图片(background)的一些设置心得总结

    写网页的时候很多情况需要对图片进行操作,如何在不进行专业的美工裁切操作的情况下而让自己的素材度达到最大的满意度呢,这是一个问题,对于懒得开ps切图的我,通常会直接在网络上download一张图片,直接 ...

  5. java 中利用反射机制获取和设置实体类的属性值

    摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...

  6. JAVA实现带图片的列表——JList

    JList:显示对象列表并且允许用户选择一个或多个项的组件. JList的构造方法: 1.根据数组创建列表: JList(Object[] listData) 构造一个 JList,使其显示指定数组中 ...

  7. java中判断图片格式并且等比例压缩图片

    最近项目中需要判断上传的图片必须是png,jpg,gif三种格式的图片,并且当图片的宽度大于600px时,压缩图片至600px,并且等比例的压缩图片的高度. 具体的实现形式: 大致的思路是: 判断根据 ...

  8. Java中显示图片的方法

    最近在做一个swing小项目,其中需要把存储在硬盘中的图片文件显示出来,总结了如下方法: 1. Graphics g = getGraphics();String name = "E:/Ca ...

  9. Java中带标签的break,continue

    首先不带标签的break,continue 就不介绍了.大家平时用的最多的也就是这样的情况了. 首先Java中没有goto,但是可以利用带标签的break, continue来实现类似的跳转. 首先来 ...

  10. Java中初级数值类型的大小, volatile和包装类wrapped type的比较

    Java中的初级数值类型 Java是静态类型语言, 所有的变量必须先声明再使用. 其初级类型一共8种: boolean: 数据只包含1bit信息, 但是占空间为8-bit, 默认值为false byt ...

随机推荐

  1. 一次彻底讲清如何处理mysql 的死锁问题

    MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导致所有事务都无法继续执行的现象.在 InnoDB 存储引擎中,死锁是通过锁机制产生的,特别是在并发较高.业务逻辑复杂的情况下,更容易发生 ...

  2. 网页设计中常用的Web英文安全字体

    原文地址:https://www.openkee.com/post-176.html 在 Web 编码中,CSS 默认应用的 Web 字体是有限的,你能看到的字体别人未必看得到.虽然在新版本的CSS3 ...

  3. for-each循环陷阱

    for-each删除元素报错 public static void main(String[] args) { List<String> list = new ArrayList<& ...

  4. 通过duxapp提供的基础方法、UI组件、全局样式,快速编写项目

    使用duxapp,我是如何实现快速完成项目开发的? 像下面这个例子,这个项目有140多个页面,但是真实的开发时间,在熟练使用duxapp的情况下,不会超过两周,并且可以将它兼容APP.小程序.H5 这 ...

  5. 灵活轻巧的java接口自动化测试实战

    前言 无论是自动化测试还是自动化部署,撸码肯定少不了,所以下面的基于java语言的接口自动化测试,要想在业务上实现接口自动化,前提是要有一定的java基础. 如果没有java基础,也没关系.这里小编也 ...

  6. js获取nginx服务器时间

    前端页面js获取nginx服务器时间在实际开发中,我们通常要使用的是服务器端的时间,而不是本机电脑的时间,在js文件中直接通过new Date()获取的时间是本机电脑的系统时间,获取服务器时间的方法如 ...

  7. 联邦学习开山之作Communication-Efficient Learning of Deep Networks from Decentralized Data

    1 介绍 1.1 背景 越来越多的手机和平板电脑成为许多人的主要计算设备.这些设备上强大的传感器(包括摄像头.麦克风和GPS),加上它们经常被携带的事实,意味着它们可以访问前所未有的大量数据,其中大部 ...

  8. ubuntu 使用tree打印树形结构

    ubuntu 使用 tree 命令能打印目录结构 sudo apt-get install tree 安装后使用tree就行了 . ├── index.php ├── phpQuery │   ├── ...

  9. java,属性覆盖,方法覆盖

    class Rootb {int x = 1;public Rootb(int i){}public int getI(){return x;}public void setI(int x){this ...

  10. 终端工具之Tabby

    我工作中用的最多的工具之一就是「终端连接工具」了,因为经常和 Linux 服务器打交道,经常在上面跑代码.排查系统问题等等. Windows 系统最常用的就是 Xshell 这款终端工具了,但是它只能 ...