Java:使用图像作为按钮
Posted
技术标签:
【中文标题】Java:使用图像作为按钮【英文标题】:Java: using an image as a button 【发布时间】:2011-06-21 09:06:26 【问题描述】:我想在 Java 中使用图像作为按钮,我尝试这样做:
BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));
但这仍然显示图像背后的实际按钮,我只想将图像用作按钮,我该怎么做?
【问题讨论】:
【参考方案1】:像这样删除边框:
button.setBorder(BorderFactory.createEmptyBorder());
还有内容1:
button.setContentAreaFilled(false);
1:取自@3sdmx 添加到问题的解决方案
【讨论】:
这有点成功,但是按钮本身仍然有某种背景,有没有办法完全删除它?还是让它透明? 您可以尝试将背景设置为另一种颜色或透明。您的图片是透明的还是实心正方形?【参考方案2】:建议将图像设置为标签并在标签中添加鼠标侦听器以检测点击。
例子:
ImageIcon icon = ...;
JLabel button = new JLabel(icon);
button.addMouseListener(new MouseAdapter()
@Override
public void mouseClicked(MouseEvent e)
... handle the click ...
);
【讨论】:
【参考方案3】:buttonIcon.setBorder(new EmptyBorder(0,0,0,0));
【讨论】:
这仍然描绘了看起来像一个非常小的按钮边框版本,至少在 MacOS 上是这样。【参考方案4】:button.setBorderPainted( false );
【讨论】:
这仍然绘制按钮边框/填充,至少在 MacOS 上。【参考方案5】:这可以通过将 contentAreaFilled 属性设置为 False 在 netbeans 中轻松完成
【讨论】:
【参考方案6】: BufferedImage buttonIcon = ImageIO.read(new File("myImage.png"));
button = new JButton(new ImageIcon(buttonIcon));
button.setBorderPainted(false);
button.setFocusPainted(false);
button.setContentAreaFilled(false);
【讨论】:
【参考方案7】:写这个
button.setContentAreaFilled(false);
【讨论】:
【参考方案8】:据我所知,没有简单的方法可以做到这一点,如果您只想显示图像并表现得像按钮,则需要覆盖 JButton 类的“paintComponent”方法来修改您的图像,您可以添加一个 JPanel 来绘制图像 (clicky) 并添加一个 MouseListener/MouseAdapter 来处理“mousePressed”事件
【讨论】:
【参考方案9】:我按照以下步骤操作,我可以成功创建一个“ImageButton”。
-
创建一个
JButton
添加了动作监听器
设置图像图标(注意我已将info.png
图标放在 src\main\resources 文件夹中并使用类加载器加载)。项目结构如下。
设置一个空的Border
禁用内容区域填充
禁用焦点
添加到 contentPane
PFB 对我有用的代码
JButton btnNewButton = new JButton("");
btnNewButton.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
System.out.println("Info clicked");
);
String iconfilePath = this.getClass().getClassLoader().getResource("info.png").getFile();
btnNewButton.setIcon(new ImageIcon(iconfilePath));
btnNewButton.setBounds(10, 438, 39, 31);
btnNewButton.setBorder(BorderFactory.createEmptyBorder());
btnNewButton.setContentAreaFilled(false);
btnNewButton.setFocusable(false);
contentPane.add(btnNewButton);
以上代码产生的输出按钮如下
【讨论】:
以上是关于Java:使用图像作为按钮的主要内容,如果未能解决你的问题,请参考以下文章