Я изучаю основы GUI Java на затмение, однако всякий раз, когда я, кажется, скомпилировать эту программу, я получаю сообщение об ошибке компилятора:Исключение в потоке «главный» java.lang.NullPointerException Java GUI
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at ClassTwo.<init>(ClassTwo.java:11)
at ClassOne.main(ClassOne.java:6)
I искал что-нибудь от линии ошибка возникла из, но я не могу найти ничего плохого с ним:
private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])),new ImageIcon(getClass().getResource(filename[1]))};
Любой вход на моих ошибках был бы весьма признателен. А вот полный код, если это поможет:
//ClassOne.Java
import javax.swing.JFrame;
class ClassOne {
public static void main(String[] args){
ClassTwo go = new ClassTwo();
go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
go.setSize(300,200);
go.setVisible(true);
}
}
//ClassTwo.Java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ClassTwo extends JFrame {
private JComboBox box;
private JLabel picture;
private static String[] filename = {"b.png", "x.png"};
private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])),new ImageIcon(getClass().getResource(filename[1]))};
public ClassTwo(){
super("Title");
setLayout(new FlowLayout());
box = new JComboBox(filename);
box.addItemListener(
new ItemListener(){ //anonymous class that implements item listener
public void itemStateChanged(ItemEvent event){
if(event.getStateChange()==ItemEvent.SELECTED) //what was selected
picture.setIcon(pics[box.getSelectedIndex()]);
}
}
);
add(box);
picture=new JLabel(pics[0]);
add(picture);
}
}
Попробуйте разбить его. Определите элемент как неинициализированный (private Icon [] pics;), затем в конструкторе сначала создайте три разные строки (pics = new Icon [2]), затем (pics [0] = new ImageIcon (getClass(). GetResource (имя файла) [0]))) Это должно помочь рассказать вам, где проблема. Вы можете даже разбить вызовы getClass() и getResource() на разные строки, которые могут сузить проблему. – MikeHelland
. Это хорошая идея. – user3183586