0

写真を変更できるコンボボックスを持つシンプルなウィジェットを作りたいです。src/test に 2 つの png 画像があります (.java ファイルのほかに)

プログラムを実行すると、次の例外が発生します。

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at first.gui.<init>(gui.java:11)
at first.Main.main(Main.java:11)

これは私のコードです:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;

public class gui extends JFrame {

    JLabel lb = new JLabel();
    Icon[] pics = {
        new ImageIcon(getClass().getResource("f.png")),
        new ImageIcon(getClass().getResource("i.png"))
    };
    String[] str = {
        "f.png", "i.png"
    };

    JComboBox box = new JComboBox(str);

    public gui() {

        super("title");

        setLayout(new FlowLayout());
        box.addItemListener(
            new ItemListener() {
                public void itemStateChanged(ItemEvent event) {


                    if (event.getStateChange() == ItemEvent.SELECTED)

                        lb.setIcon(pics[box.getSelectedIndex()]);
                }
            });
        add(box);
    }
}

私はそれを解決するために何をすべきですか?

4

3 に答える 3

2

あなたが説明したように問題がある場合、相対パスは次のようになります./src/test/f.png(Eclipseは、$project_locプロジェクトのルートフォルダーである相対からアプリケーションを開始します)

代わりにリソースフォルダーを使用することを検討してください。src/resources/またはlib/画像/その他のリソース用。

于 2013-09-13T13:28:31.823 に答える
1

相対パスを使用し"f.png"、クラスはパッケージ (ディレクトリ) にありfirstます。を使用します"/test/f.png"(そして、すべてが大文字と小文字を区別していることを確認してください。)

于 2013-09-13T13:20:42.050 に答える
0

私はこれを行ったので、コードを書くことができます

私がすべき唯一のことは:

私の画像を入れる

project_name/bin/test

私の .class ファイルはその後、ソースを認識できます

于 2013-09-14T03:09:49.227 に答える