java - NullPointerException,杀死了我的程序

标签 java swing nullpointerexception jcombobox

我正在尝试创建我的小方框,它会在从组合框中选择时显示颜色。但是当我尝试运行该程序时,我不断收到 NullPointerException 错误。我看不出有什么问题。

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

public class ThreeColorsFrame extends JFrame
{
    private static final int FRAME_WIDTH = 300;
    private static final int FRAME_HEIGHT = 400;

    private JComboBox box;
    private JLabel picture;

    private static String[] filename = { "Red", "Blue", "Green" };
    private Icon[] pics = { new ImageIcon(getClass().getResource(filename[0])),
                    new ImageIcon(getClass().getResource(filename[1])),
                    new ImageIcon(getClass().getResource(filename[2])) };

    public ThreeColorsFrame()
    {
        super("ThreeColorsFrame");
        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[0]);
        add(picture);

    }

}

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at ThreeColorsFrame.<init>(ThreeColorsFrame.java:33)
    at ThreeColorsViewer.main(ThreeColorsViewer.java:36)

最佳答案

你的问题是你还没有初始化picture。你有

private JLabel picture;

但这之前从未设置过:

 picture.setIcon(...);

在构造函数中调用,尽管是在条件内。

你需要初始化它,例如

picture = new JLabel(...); // whatever

关于java - NullPointerException,杀死了我的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15998813/

相关文章:

java - Apache Camel 和 Spring 的类型转换问题

java - 序列化循环对象树 - StackOverflowError - 需要自定义序列化代码

java - 在没有滚动条的情况下在 JList 上滚动

java - 如何查看已安装的 Swing 应用程序控制台/日志?

android - onDestroyView() 之后调用 Fragment onSaveInstanceState()

Java:在 "+"周围分割字符串

java - 如何在 Web 应用程序中使用 Virtualizer?

java - 如何使用 json.simple 和 java 在 JSONArray 中的每个 JSONObject 之间添加新行

java - SwingX 对 JXFrame 的淡入淡出效果?

indexing - SOLRJ-6.0.0 : Insertion of a bean object which associate list of bean object is giving null pointer exception