我已经编写了这段代码来显示图像而不是按钮跟随 This answer
我的代码是:
JButton btnCalender;
try {
BufferedImage calendarIcon = ImageIO.read(new File("Calendar_0.jpg"));
btnCalender = new JButton("Calendar", new ImageIcon(calendarIcon));
btnCalender.setBorder(BorderFactory.createEmptyBorder());
btnCalender.setContentAreaFilled(false);
btnCalender.setBounds(244, 177, 129, 36);
frmOptions.getContentPane().add(btnCalender);
btnCalender.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
但图像没有显示。按钮区域为空白。所有图像都在Project文件夹中。 为什么会这样?请给我解决方案。感谢。
修改: 找到解决方案 我的图像重建太大了。我把它压缩成144 * 144。 现在它正在运作。
答案 0 :(得分:1)
您发布的代码看起来不错。如果没有剩下的代码,很难确定,但看起来您遇到的问题与实际将按钮放在GUI上有关。
仔细检查没有任何IOExceptions查找/加载图像。
答案 1 :(得分:0)
您是否尝试过添加:
btnCalender.setContentAreaFilled(false);
答案 2 :(得分:0)
尝试删除边框和内容区域,如下所示:
BufferedImage calendarIcon = ImageIO.read(new File("Calendar_0.jpg"));
btnCalender = new JButton("Back", new ImageIcon(calendarIcon));
btnCalender.setBorder(BorderFactory.createEmptyBorder());
btnCalender.setContentAreaFilled(false);
答案 3 :(得分:0)
您可以尝试两件事,首先确保您已为contentPane指定了布局“精确定位”
frmOptions.getContentPane().setLayout(null);
并确保在您之后重新绘制了您的contentPane我添加了像这样的jbutton组件frmOptions.getContentPane().repaint();
在将内容添加到contentPane后,请记得将它放入!
答案 4 :(得分:0)
JFrame f = new JFrame("This is a test");
f.setSize(400, 150);
Container content = f.getContentPane();
BufferedImage calendarIcon = ImageIO.read(new File("C:\\Documents and Settings\\sugandhan\\Desktop\\suganthan.jpg"));
content.add(new JButton("Calendar", new ImageIcon(calendarIcon)));
f.setVisible(true);
请检查图像路径
答案 5 :(得分:0)
首先,你不需要bufferedImage来做到这一点,其次你必须纠正图像的链接,如下所示:
JFrame frmOptions = new JFrame();
JButton btnCalender = new JButton("Calendar", new ImageIcon(
"./src/Calendar_0.jpg"));
btnCalender.setBorder(BorderFactory.createEmptyBorder());
btnCalender.setContentAreaFilled(false);
btnCalender.setBounds(244, 177, 129, 36);
btnCalender.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
frmOptions.getContentPane().add(btnCalender);
frmOptions.setDefaultCloseOperation(3);
frmOptions.pack();
frmOptions.setLocationRelativeTo(null);
frmOptions.setVisible(true);
我希望有所帮助,如果有的话请补上;)萨拉姆