Java Combo Boxes + значки изображений - PullRequest
0 голосов
/ 15 июля 2011

Я пытаюсь создать действительно простую программу, которая будет чередовать две картинки в зависимости от того, какой элемент из выпадающего списка выбран.Это код, который я пытаюсь запустить, но я получаю сообщение об ошибке:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:181)
at Gui.<init>(Gui.java:10)
at Apples.main(Apples.java:7)

Изображения находятся в файле src.

Кто-нибудь знает, что я делаю не так?Спасибо, Равин

this screenshot demonstrates that the images are in the src file

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Gui extends JFrame{

private JComboBox box;
private JLabel picture;
private static String [] filename = {"Ravinsface.png", "Wojs face.png"};
private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])), new      ImageIcon(getClass().getResource(filename[1]))};

public Gui(){
super("The Title");
setLayout(new FlowLayout());
box = new JComboBox(filename);
box.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event){
    if(event.getStateChange()==ItemEvent.SELECTED);
    picture.setIcon(pics[box.getSelectedIndex()]);

}
 }

 );
add(box);
picture = new JLabel(pics[1]);
add(picture);


}

}

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Похоже, что один (или более) аргументов, передаваемых в конструктор ImageIcon, являются нулевыми.Это потому, что ресурс не находится здесь:

private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])), new      ImageIcon(getClass().getResource(filename[1]))};

Почему вы просто не используете

new ImageIcon(String filename)

?Я не уверен на 100%, как работает getResource, никогда не использовал его.

1 голос
/ 15 июля 2011

Используйте getClass (). GetClassLoader (). GetResource (String)

/ e1 Я поместил объяснение различных методов getResource (String) в другом ответе.

0 голосов
/ 13 сентября 2013

сделайте это: вы должны поместить свой .png

рядом с вашими файлами .class (в имя_проекта / bin)

, тогда путь к вашим файлам может распознать

, тогда он будетРаботает, помните, что вы используете загрузчик классов, поэтому, если вы поместите изображения рядом с файлами .class, это будет правильно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...