簡體   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