java - 无法使用类路径资源将 JPanel 绘制为背景图片

标签 java swing user-interface path jpanel

下面是我打算用于绘画的类。

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class BackgroundMainMenu extends JPanel {

private static final long serialVersionUID = 1L;
    public Image img;

      public BackgroundMainMenu(String img) {
        this(new ImageIcon(img).getImage());
      }

      public BackgroundMainMenu(Image img) {
        this.img = img;
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);
      }

      public void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, null);
      }
}

当我使用如下所示的系统路径时,我会得到背景。

public class FirstWindow extends JFrame {

   public FirstWindow() {

   BackgroundMainMenu panel = new BackgroundMainMenu(newImageIcon("E:\\sources\\mainMenu.jpg").getImage());

   JFrame mainFrame = new JFrame("Program Window");
   mainFrame.getContentPane().add(panel); 
   mainFrame.pack();
   mainFrame.setVisible(true);
   }
}

但是当我使用类路径资源时它不起作用。我尝试更改此行

 this(new ImageIcon(img).getImage());

对此。

 this(new ImageIcon(FirstWindow.class.getResource(img)).getImage());

还有这一行

BackgroundMainMenu panel = new BackgroundMainMenu(new ImageIcon("E:\\sources\\mainMenu.jpg").getImage());

对此。

BackgroundMainMenu panel = new BackgroundMainMenu(newImageIcon(FirstWindow.class.getResource("/stuff/images/mainMenu.jpg")).getImage());

我做错了什么?有没有更好的方法使用 JPanel 绘制背景?

最佳答案

BackgroundMainMenu(newImageIcon(FirstWindow.class.getResource("/stuff/images/mainMenu.jpg")).getImage());

阅读 Swing 教程中关于 Loading Images Using getResource 的部分加载资源的基本示例

几点:

  1. “stuff”目录实际上在您的类路径中吗?
  2. 是否需要前导“/”?

关于java - 无法使用类路径资源将 JPanel 绘制为背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42717457/

相关文章:

java - 按多个字段对对象列表进行排序

java - JTextField 在 Mac 上显示,但在 Windows 上不显示

java - 以编程方式创建编辑文本并将其对齐到 TextView 的右侧

javascript - 如何在页面上引用多个相同的用户控件

python - 如何验证 tkinter 中的条目?

java - 如何将 JAR 文件作为 Java 程序运行,特别是 http ://iapg. jade-hs.de/personen/brinkhoff/generator/

java - OpenCV - 使用 Java 去除图像中的噪声

java - 二元运算符的操作数类型错误 '+'

java - 每秒使用 Web 服务调用更新 Swing 客户端信息是否合适?

java - 如何在 Java 中创建自定义 JButton 类?