Java:使用图像作为button

我想在Java中使用一个图像作为button,我试图做到这一点:

BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath")); button = new JButton(new ImageIcon(buttonIcon)); 

但是这仍然显示图像背后的实际button,我只想将图像作为button来使用,我该怎么做?

删除像这样的边框:

 button.setBorder(BorderFactory.createEmptyBorder()); 

然后还有内容1

 button.setContentAreaFilled(false); 

1 :从@ 3sdmx添加到问题的解决scheme

build议将图像设置为标签,并将鼠标侦听器添加到标签以检测点击。

例:

 ImageIcon icon = ...; JLabel button = new JLabel(icon); button.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { ... handle the click ... } }); 

buttonIcon.setBorder(new EmptyBorder(0,0,0,0));

 button.setBorderPainted( false ); 

这可以通过将contentAreaFilled属性设置为False在NetBeans中轻松完成

  BufferedImage buttonIcon = ImageIO.read(new File("myImage.png")); button = new JButton(new ImageIcon(buttonIcon)); button.setBorderPainted(false); button.setFocusPainted(false); button.setContentAreaFilled(false); 

只是写这个

 button.setContentAreaFilled(false); 

据我所知,有没有简单的方法做到这一点,你将需要重写JButton类的“paintComponent”方法,以图像,如果你只想显示一个图像和行为像一个button,你可以添加一个JPanel绘制图像( clicky )并添加一个MouseListener / MouseAdapter来处理“mousePressed”事件

我遵循以下步骤,我可以成功地创build一个“ImageButton”。

  1. 创build一个JButton
  2. 添加了一个动作监听器
  3. 设置一个图像图标(注意我已经将info.png \ main \ resources文件夹中的info.png图标放入并使用类加载器加载)。 项目结构如下。 项目文件夹结构
  4. 设置一个空的Border
  5. 禁用内容区域填充
  6. 禁用可聚焦性
  7. 已添加到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); 

上面代码产生的输出button如下

在这里输入图像说明