[转]java中带图片按钮的大小设置
在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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2016-03-15 虚拟地球原理与实现
2016-03-15 开源(免费)三维 GIS(地形,游戏)
2016-03-15 [转]有关WorldWind1.4的worldwind.cs窗口设计器打开错误的解决方法
2016-03-15 [转]仿World Wind构造自己的C#版插件框架——WW插件机制精简改造
2015-03-15 GeoServer+MySQL安装及配置过程
2015-03-15 GeoServer 常见问题总结