0
내 Java 프로젝트에 문제가 있습니다. 배경 이미지가있는 JFrame을 만들려고하지만 javax.swing.ImageIcon을 사용하여 배경 JLabel 아이콘을 설정하면 프로그램을 실행할 때 콘솔에 예외 오류가 표시되고 이미지가 작동하지 않습니다. 빈 JFrame 만 표시합니다. 여기 내 코드는 다음과 같습니다Swing ImageIcon 오류가 발생하여 이미지가 나타나지 않음
@SuppressWarnings("serial")
public class MainUI extends JFrame {
public static void main(String[] args) {
new MainUI().build(); // Calls build method
}
private void build() {
// Builds JFrame
JFrame frame = new JFrame();
JPanel base = new JPanel();
JLabel background = new JLabel();
frame.setVisible(true);
frame.setTitle("Space Age");
frame.setSize(640,480);
frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
frame.setAutoRequestFocus(false);
frame.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
frame.setLocationRelativeTo(null);
base.setSize(640,480);
base.setAlignmentX(0.0F);
base.setAlignmentY(0.0F);
base.setBackground(new java.awt.Color(255,255,255));
background.setSize(640,480);
background.setAlignmentX(0.0F);
background.setAlignmentY(0.0F);
background.setIcon(new ImageIcon(getClass().getResource("spaceage.images.starfield.png")));
frame.add(base);
frame.add(background);
}
}
이 오류 메시지가 모습입니다 :
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at spaceage.src.MainUI.build(MainUI.java:36)
at spaceage.src.MainUI.main(MainUI.java:15)
누군가가 내가 잘못 어떻게 제대로 이미지 표시를 만드는 방법 무슨 짓을했는지 말해 줄 수 있습니까? 미리 감사드립니다. 산티아고
대부분의 경우 존재하지 않는 경로에서 이미지를로드하고 있습니다. 새로운 ImageIcon (getClass(). getResource ("/ spaceage/images/starfield.png")))'을 사용해주세요. '/'문자 추가에 유의하십시오. 또한 '.' 당신이 실제로 볼 수있는 하위 폴더 – Aarowaim
나는 이미 그것을 시도했습니다; 점들을 사용하는 것과 같습니다. 오류는 여전히 슬래시에서 발생하므로 이미지 경로와 관련이 없다고 생각하지 않습니다. –
제 경험상, .jar 파일의 이미지로드는 전체 파일 경로를 사용하는 것보다 훨씬 어렵고 부두가 제대로 작동해야합니다. 나는'images' 패키지를 사용하고'getClass(). getResource ("/ images/tileset.png")'를 호출하는 수많은 시도 후에 내 프로젝트 중 하나에서 작동하도록했습니다. – Aarowaim