我正在尝试向 JPanel 添加背景图像。绘制组件似乎没有绘制为背景导入的图像。有人能指出为什么吗?我已经导入了所有必需的库。
public class ImagePanel extends JPanel {
public static BufferedImage image;
public ImagePanel() {
try {
image = ImageIO.read(new File("cards/background.png"));
System.out.println("Image Import Succesful");
} catch (IOException ex) {
System.out.println("IMAGE IMPORT ERROR");
}
ImageIcon icon = new ImageIcon(image);
icon.setImage(image);
JLabel imageLabel = new JLabel(icon);
add(imageLabel);
}
@Override
protected void paintComponent(Graphics g) {
System.out.println("painted");
super.paintComponent(g);
g.drawImage(image, 100, 100,
this);
}
}
最佳答案
您从哪里加载图像? 文件系统还是类路径?
如果您要从类路径加载图像,则可以使用类加载器来加载图像。如果您要从文件系统加载图像,则使用该路径文件必须是绝对路径。
如果您从类路径加载图像,则可以绘制面板的背景,如下所示:
public class ImagePanel extends JPanel {
private ImageIcon imageIcon;
public ImagePanel() {
prepareBackground();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (null!= imageIcon)
g.drawImage(image.getImage(), 100, 100, this);
else
System.err.println("Background image is NULL!!");
}
}
private void prepareBackground() {
final java.net.URL imgURL = ImagePanel.class.getResource("cards/background.png");
imageIcon = new ImageIcon(imgURL);
}
}
如果您从文件系统加载,您可以在此处更正您的代码:
image = ImageIO.read(new File("COMPLETE_PATH_TO_background.png"));
关于java - 为面板制作背景图像时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719260/