java按钮图片适应_[转]java中带图片按钮的大小设置

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

6250450aebc3ef59aec981dfc0893909.png

按照方法:

JButton jb1 = newJButton();

jb1.setBounds(0, 0, 25, 20);

ImageIcon ii= new ImageIcon("images/xxx.png");

jb1.setIcon(ii);

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

所以,修改为以下:

JButton jb1 = newJButton();

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= newImageIcon(temp);

jb1.setIcon(ii);

jb1.setToolTipText("image");

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

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

packagecn.cetc.util;//可修改为自定的包名importjava.awt.Dimension;importjava.awt.Image;

importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;importjava.net.URL;importjavax.swing.ImageIcon;importjavax.swing.JButton;public classGUITools {//将Icon图标按照JButton对象的边界大小进行缩放,并返回JButton对象

public static JButton getButtonWithScaledIcon(URL resource,int width,intheight,String tip){

JButton button=newJButton();

button.setBounds(0,0,width,height);

button.setPreferredSize(newDimension(width,height));

ImageIcon buttonImgSrc=new ImageIcon(resource);//载入原始大小的图像

Image temp=buttonImgSrc.getImage().getScaledInstance(button.getWidth(), button.getHeight(), Image.SCALE_DEFAULT);//改变图像的大小

ImageIcon scaledImageIcon = newImageIcon(temp);

button.setIcon(scaledImageIcon);//大多数组件的setIcon方法只接受ImageIcon类型的参数,并且Java组件类只有这一个方法用来设置图片。JFrame组件有方法setIconImage( Image image)接受Image类型的参数

button.setToolTipText(tip);//JButton的提示信息

button.setBorderPainted(false);

button.setContentAreaFilled(false);//初始化时不绘制内容区域,使显示为透明的按钮//效果增强代码:用于处理鼠标进入或离开工具条按钮时的效果

button.addMouseListener(newMouseAdapter() {public voidmouseEntered(MouseEvent e) {if (e.getSource() instanceofJButton) {

((JButton) e.getSource()).setContentAreaFilled(true);

}

}public voidmouseExited(MouseEvent e) {if (e.getSource() instanceofJButton) {

((JButton) e.getSource()).setContentAreaFilled(false);//设置 contentareafilled 属性。如果该属性为 true,则按钮将绘制内容区域。如果希望有一个透明的按钮,比如只是一个图标的按钮,那么应该将此属性设置为 false。不要调用 setopaque(false)。contentareafilled 属性的默认值为 true。

}

}

});returnbutton;

}

}

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

调用如下:

//创建登录按钮

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

最终效果:

c3e872ab039281b0e13ecf14839fa567.png

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值