Java:使用图像作为按钮

时间:2011-02-04 13:39:34

标签: java swing awt jbutton

我想在Java中使用图像作为按钮,我试图这样做:

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

但这仍然显示图像背后的实际按钮,我只想将图像作为按钮,我该怎么做?

9 个答案:

答案 0 :(得分:27)

像这样删除边框:

button.setBorder(BorderFactory.createEmptyBorder());

然后还有内容 1

button.setContentAreaFilled(false);

1 :取自@ 3sdmx

中添加到问题的解决方案

答案 1 :(得分:9)

建议将图像设置为标签,并在标签上添加鼠标监听器以检测点击次数。

示例:

ImageIcon icon = ...;

JLabel button = new JLabel(icon);

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

button.setBorderPainted( false );

答案 4 :(得分:1)

通过将 contentAreaFilled 属性设置为False,可以在netbeans中轻松完成此操作

答案 5 :(得分:1)

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

答案 6 :(得分:1)

写下这个

button.setContentAreaFilled(false);

答案 7 :(得分:0)

据我所知,没有简单的方法,你需要覆盖JButton类的“paintComponent”方法来固定你的图像,如果你只想显示一个图像并且表现得像一个按钮,你可以添加一个JPanel,它绘制图像(clicky)并添加一个MouseListener / MouseAdapter来处理“mousePressed”事件

答案 8 :(得分:0)

我按照以下步骤操作,我可以成功创建'ImageButton'。

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

    上面代码生成的输出按钮如下

    enter image description here