我想圖像添加到一個JPanel類,我使用的方法getResource()
但它返回Exception in thread "main" java.lang.IllegalArgumentException: input == null!
,因爲路徑到我給的圖像文件夾是無效的,現在我要如何獲得有效的路徑,我意識到也許這很容易,這不是我要問的問題,但我花了很多時間並嘗試不同的路徑,但它不起作用;java如何使用getResource()添加圖像?
這裏的JPanel類
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class Application extends JPanel {
private BufferedImage image;
public Application() {
try {
image = ImageIO.read(getClass().getResource("/ressources/image.png"));
} catch (IOException ex) {
System.out.println("problem! image can't be loaded!");
}
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
,這裏的主類
import javax.swing.*;
//import java.awt.*;
public class mainClass {
public mainClass() {
JFrame app = new JFrame();
app=.setTitle("main window");
app=.setSize(400, 400);
app=.setLocationRelativeTo(null);
app=.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app=.add(new Application());
app=.setVisible(true);
}
public static void main(String[] args) {
mainClass class = new mainClass();
}
}
錯誤顯然是在該行 image = ImageIO.read(getClass().getResource("/ressources/image.png"));
原因的路徑無效, 我用一個maven項目,所以這個類的路徑是: pr ojectName的\ src \主\ java的\程序\ mainClass.java PROJECTNAME的\ src \主\ java的\程序\ Application.java
我創建了一個文件夾 「ressources」 我把圖像還有,這裏的路徑 PROJECTNAME \ ressources \ image.png
謝謝。
根據您的目錄結構,我假設你使用Maven。要添加到jar中的資源(可以通過'getResources'訪問)應放在'projectName \ src \ main \ resources'中,然後可以通過省略「resources」目錄名來訪問它們。例如,如果你有一個名爲'PROJECTNAME資源的\ src \主\資源\ Image.png',你會再使用使用'的getClass()的getResource( 「/ Image.png」);' – MadProgrammer
@MadProgrammer現在我懂了,謝謝你。 – cbInfo009
你的意思是「資源」?錯字是否會導致問題? –