Java自定义图片按钮

一、问题描述
Java中常用的按钮有两种,一种谁AWT里面的Button,另一是Swing里的JButton。但是它们的样子实在是长得很抱歉。Java也提供了一些方法,可以设置按钮的背景图片,不过效果的话(图1),还不如不设置。接下来,我将我知道的制作一个漂亮的按钮的方法分享给大家。

JButton设置背景图效果

            图1 JButton设置背景图效果

二、具体方法

1、在Java里,JLabel其实也是一个组件,也是可以充当JButton的,用它来设置一张背景图,绝不会出现JButton那样的效果,方法如下:

这里写图片描述

                                    图2 JLabel实现Button效果
ImageIcon icon = new ImageIcon("image\\start1.png");    
JLabel startGame = new JLabel(icon,SwingConstants.CENTER);

说明:这样的做法有个缺点,就是你的图片你必须包含菜单所要表达的意思,否则它仅仅是张图片而已,不过你也可以在JLabel的左边或者是右边添加文字描述。对于组件的监听事件,同JButton的一模一样。方法如下:

JLabel() 
          //创建无图像并且其标题为空字符串的 JLabel。 
JLabel(Icon image) 
         // 创建具有指定图像的 JLabel 实例。 
JLabel(Icon image, int horizontalAlignment) 
        //  创建具有指定图像和水平对齐方式的 JLabel 实例。 
JLabel(String text) 
        //  创建具有指定文本的 JLabel 实例。 
JLabel(String text, Icon icon, int horizontalAlignment) 
        //  创建具有指定文本、图像和水平对齐方式的 JLabel 实例。 
JLabel(String text, int horizontalAlignment) 
         // 创建具有指定文本和水平对齐方式的 JLabel 实例。 

2、有人说,我不想用JLabel,就是要用JButton。好的,没关系,就喜欢有个性的人。同样也可以做到,缺点同JLabel的一样,方法如下:

ImageIcon icon = new ImageIcon("image\\start1.png");
JButton startGame = new JButton();
//设定透明效果
startGame.setOpaque(false);  
//去掉背景点击效果
startGame.setContentAreaFilled(false);  
//去掉聚焦线
startGame.setFocusPainted(false);
//去掉边框
startGame.setBorder(null); 
//设置显示的图片
startGame.setIcon(icon);
  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
是的,你可以使用 `BasicButtonUI` 来自定义按钮图片。下面是一个示例代码,展示如何将自定义图片应用到按钮上: ```java import javax.swing.*; import javax.swing.plaf.basic.BasicButtonUI; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class CustomImageButtonExample { public static void main(String[] args) { JFrame frame = new JFrame("Custom Image Button Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton button = new JButton(); button.setBackground(Color.WHITE); // 设置按钮背景色为白色 button.setUI(new BasicButtonUI()); // 使用 BasicButtonUI // 设置按钮的默认图片和按下时的图片 ImageIcon defaultIcon = new ImageIcon("path_to_default_image.jpg"); ImageIcon pressedIcon = new ImageIcon("path_to_pressed_image.jpg"); button.setIcon(defaultIcon); // 添加鼠标事件监听器,用于切换图片 button.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { button.setIcon(pressedIcon); // 鼠标按下时切换为按下时的图片 } @Override public void mouseReleased(MouseEvent e) { button.setIcon(defaultIcon); // 鼠标释放后切换回默认图片 } }); frame.getContentPane().add(button); frame.pack(); frame.setVisible(true); } } ``` 在上述示例中,我们创建了一个 `JButton` 对象,并使用 `BasicButtonUI` 来自定义按钮外观。我们使用 `ImageIcon` 类加载了默认图片和按下时的图片,并将默认图片设置为按钮的初始图标。 然后,我们添加了鼠标事件监听器,当鼠标按下时,将按钮的图标切换为按下时的图片;当鼠标释放时,将按钮的图标切换回默认图片。 请确保替换代码中的 `"path_to_default_image.jpg"` 和 `"path_to_pressed_image.jpg"` 为实际图片的路径。 希望这次能满足你的需求,如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值