在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中带图片按钮的大小设置
原文:https://www.cnblogs.com/rainbow70626/p/12501079.html