【问题标题】:trouble making background image for a Panel为面板制作背景图像时遇到问题
【发布时间】:2014-11-03 17:09:31
【问题描述】:

我正在尝试将背景图像添加到 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); 
    }
}

【问题讨论】:

  • 您的paintComponent 覆盖是绘制背景的地方。您应该删除 ImageIcon / JLabel 代码
  • 是的,为什么添加标签绘制图像?您是否收到“图像导入错误”?
  • 不,我没有收到图像导入错误。即使删除了与 ImageIcons 和 Labels 相关的代码,它也不起作用。油漆组件不起作用
  • 1) 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)。 2) 例如,获取图像的一种方法是热链接到在this Q&A 中看到的图像。
  • 您确定您的 ImagePanel 实例具有非零宽度和高度吗?

标签: java image swing jpanel


【解决方案1】:

您从哪里加载图像? 文件系统类路径

如果您是从 classpath 加载图像,您可以使用类加载器来加载图像。如果您是从 文件系统 加载图像,则该路径文件必须是绝对路径。

如果您从类路径加载图像,您可以像这样绘制面板的背景:

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"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2012-11-27
    • 2012-12-06
    相关资源
    最近更新 更多