不能使用类路径资源将 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);
   }
}

,但是当我使用ClassPath Resources时,它不起作用。我尝试更改此行

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

使用getResource读取有关加载资源

的基本示例的"加载图像"的部分。

几点:

  1. 实际上是您的classpath上的"东西"目录?
  2. 是领先的"/"吗?

最新更新