Trước hết, thay đổi dòng này:
image = ImageIO.read(getClass().getClassLoader().getResource("resources/icon.gif"));
này:
image = ImageIO.read(getClass().getResource("/resources/icon.gif"));
Thông tin thêm, với tư cách đến nơi nằm chênh lệch giữa hai phương pháp, có thể được tìm thấy trên chủ đề này - Different ways of loading a Resource
Đối với Eclipse:
Đối với NetBeans:
Đối với IntelliJ IDE A:
- Right-Click các src thư mục của dự án. Chọn New -> Gói
- Dưới New Package Dialog, gõ tên của gói, nói nguồn. Nhấp vào OK
- Phải Nhấp vào gói tài nguyên. Chọn New -> Gói
- Dưới New Package Dialog, gõ tên của gói, nói hình ảnh. Bấm OK
- Bây giờ hãy chọn hình ảnh mà bạn muốn thêm vào dự án, sao chép nó. Tài nguyên nhấp chuột phải.hình ảnh gói, bên trong IDE và chọn Paste
Dùng đường dẫn cuối cùng để kiểm tra làm thế nào để truy cập vào tập tin này ngay bây giờ trong mã Java. Mặc dù ví dụ này, người ta sẽ được sử dụng
getClass().getResource("/resources/images/myImage.imageExtension");
Nhấn phím Shift + F10, để thực hiện và điều hành dự án. Các tài nguyên và hình ảnh tài nguyên và hình ảnh thư mục, sẽ được tạo tự động bên trong thư mục ra.
Nếu bạn đang làm nó bằng tay:
QUICK REFERENCE mã ví dụ (mặc dù cho biết thêm chi tiết xem xét, Một chút liên kết thêm rõ):
package swingtest;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
/**
* Created with IntelliJ IDEA.
* User: Gagandeep Bali
* Date: 7/1/14
* Time: 9:44 AM
* To change this template use File | Settings | File Templates.
*/
public class ImageExample {
private MyPanel contentPane;
private void displayGUI() {
JFrame frame = new JFrame("Image Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
contentPane = new MyPanel();
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private class MyPanel extends JPanel {
private BufferedImage image;
public MyPanel() {
try {
image = ImageIO.read(MyPanel.class.getResource("/resources/images/planetbackground.jpg"));
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
@Override
public Dimension getPreferredSize() {
return image == null ? new Dimension(400, 300): new Dimension(image.getWidth(), image.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
new ImageExample().displayGUI();
}
};
EventQueue.invokeLater(runnable);
}
}
Nguồn
2012-03-26 04:40:40
tôi nghĩ rằng bạn cần một '/ 'trước các nguồn lực, kiểm tra xem hài lòng – Coffee
@ Adel Cảm ơn vì điều đó. Tôi đang gặp lỗi khác. Ngoại lệ trong chuỗi "main" java.lang.IllegalArgumentException: input == null! Lỗi tương tự với thay đổi – exlux15
Thử xóa .getClassLoader() –