【发布时间】:2011-06-21 09:06:26
【问题描述】:
我想在 Java 中使用图像作为按钮,我尝试这样做:
BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));
但这仍然显示图像背后的实际按钮,我只想将图像用作按钮,我该怎么做?
【问题讨论】:
我想在 Java 中使用图像作为按钮,我尝试这样做:
BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));
但这仍然显示图像背后的实际按钮,我只想将图像用作按钮,我该怎么做?
【问题讨论】:
像这样删除边框:
button.setBorder(BorderFactory.createEmptyBorder());
还有内容1:
button.setContentAreaFilled(false);
1:取自@3sdmx 添加到问题的解决方案
【讨论】:
建议将图像设置为标签并在标签中添加鼠标侦听器以检测点击。
例子:
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”方法来修改您的图像,您可以添加一个 JPanel 来绘制图像 (clicky) 并添加一个 MouseListener/MouseAdapter 来处理“mousePressed”事件
【讨论】:
我按照以下步骤操作,我可以成功创建一个“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);
以上代码产生的输出按钮如下
【讨论】: