[转]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中带图片按钮的大小设置

原文地址:https://www.cnblogs.com/rainbow70626/p/12501079.html