java - 为面板制作背景图像时遇到问题

标签 java image swing jpanel

我正在尝试向 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/

相关文章:

Java - string.split 与冲突的正则表达式

android - 图像显示在设备上但不显示在模拟器上?安卓

java - 无法在 run() 中将 swing 组件放到框架上?

java - 2个jpanel但不知道如何控制它们

Java : ProgressBar does not display when click on the button

java - Android:一个父 Activity 中的静态 TextView 和两个操作它的子 Activity 类

wpf - 在 WPF 中裁剪图像

html - 为什么图像在定义背景时不显示 : url() rule in CSS but is displaying when adding 'src' attribute to <img> tag?

java - 当我使用运行文件进行测试时,NetBeans GUI 设计表现不一致

c# - 将图像转换为 byte[] c# 并在 android 中取回图像