【发布时间】:2012-11-27 08:05:26
【问题描述】:
我有一个JPanel,我想添加一张图片作为它的背景。我该怎么做?
frame = new JFrame("Some frame");
panel1 = new JPanel();
panel1.setBorder(new EmptyBorder(5, 5, 5, 5));
// NEED TO ADD AN IMAGE TO THIS PANEL
panel1.setLayout(cardlayout);
frame.getContentPane().add(panel1);
frame.setLocationByPlatform(true);
frame.setVisible(true);
我需要将图像添加到panel,我该怎么做?
更新 1
panel1 = new JPanel()
{
private static final long serialVersionUID = 1L;
@Override
public void paintComponent(Graphics g)
{
g.drawImage(Toolkit.getDefaultToolkit().createImage("1.jpg"), 0, 0, null);
}
};
【问题讨论】:
-
在更新中,我看到您忘记在覆盖的
paintComponent方法中调用super.paintComponent(g);,这可能是一个主要问题(即使是在paintComponent中提取图像之外的问题)。被覆盖的方法最好首先调用它们的super -
@DavidKroukamp 我尝试添加
super.paintComponent(g);但它仍然没有向 Jpanel 添加图像 -
是 1.jpg 与您的 jar 位于同一目录中吗?还是捆绑的?
-
如果它包含在 jar 中并且与执行类相同,请尝试:
Image img = ImageIO.read(getClass().getResourceAsStream("1.jpg"));否则您必须执行“/packagename/1.jpg”(注意任何句点(@987654333 packagename 中的 @) 必须替换为 /)
标签: java image swing jpanel paintcomponent