繁体   English   中英

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

[英]Can't use classpath resource to paint JPanel as background picture

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

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教程中有关使用getResource加载图像的部分,以获取加载资源的基本示例。

要点:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM