我想在Java中使用图像作为按钮,我试图这样做:
BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));
但这仍然显示图像背后的实际按钮,我只想将图像作为按钮,我该怎么做?
答案 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'。
JButton
info.png
图标放在src \ main \ resources文件夹中并使用类加载器加载)。项目结构如下。 Border
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);
上面代码生成的输出按钮如下