我使用下面的代码将背景图片添加到JPanel
,问题是我无法找到将图像添加到JButton
的方法..任何想法?< / p>
public void displayGUI() {
JFrame frame = new JFrame("Painting Example");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(440, 385);
JPanel panel = new JPanel();
frame.add(panel);
JButton button = new JButton("want picture here");
panel.add(button);
button.addActionListener(new Action7());
}
class Custom4 extends JPanel {
public BufferedImage image;
public Custom4() {
try {
image = ImageIO.read(new URL("http://i68.tinypic.com/2itmno6.jpg"));
} catch (IOException ioe) {
System.out.println("Unable to fetch image.");
ioe.printStackTrace();
}
}
public Dimension getPreferredSize() {
return (new Dimension(image.getWidth(), image.getHeight()));
}
public void paintComponent(Graphics x) {
super.paintComponent(x);
x.drawImage(image, 0, 0, this);
}
}
答案 0 :(得分:6)
只需使用the JButton
Icon
constructor,然后传递ImageIcon
。
E.g。而不是
JButton button = new JButton("want picture here");
DO
JButton button = new JButton(new ImageIcon(new URL("http://i68.tinypic.com/2itmno6.jpg")));
由于URL构造函数抛出MalformedURLException
,您还需要将其包装在try-catch块中(并将按钮使用语句放在那里)。要缩放它,您还需要一些extra calls。此外,您可以通过removing border and content完全删除按钮的可见部分。由于按钮后面有JPanel
,因此您还需要将其设置为透明。完整代码如下:
try {
JButton button = new JButton(new ImageIcon(((new ImageIcon(
new URL("http://i68.tinypic.com/2itmno6.jpg"))
.getImage()
.getScaledInstance(64, 64, java.awt.Image.SCALE_SMOOTH)))));
button.setBorder(BorderFactory.createEmptyBorder());
button.setContentAreaFilled(false);
panel.setOpaque(false);
panel.add(button);
button.addActionListener(new Action7());
}
catch (MalformedURLException e) {
// exception handler code here
// ...
}
64x64是此处的图像尺寸,只需将它们更改为图像所需的尺寸即可。
答案 1 :(得分:3)
更简单:使用icon
new JButton(new ImageIcon(youImage));
答案 2 :(得分:3)
BufferedImage img = ImageIO.read(new URL(url));
JButton button = new JButton(new ImageIcon(img));