“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”。我不知道我做错了什么

时间:2014-06-25 21:59:28

标签: java nullpointerexception

我对Java很陌生,我以前从未尝试过这样的项目。我想如果你们能帮我解决这个问题。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at grafika.OknoKniha.initOknoK(OknoKniha.java:134)
    at grafika.OknoKniha.<init>(OknoKniha.java:44)
    at grafika.PanelTopKnih$VyberKnihy.valueChanged(PanelTopKnih.java:74)

课程的问题部分:

public class OknoKniha {

    private JFrame knihaOkno;
    private Kniha kniha;

    public OknoKniha(Kniha kniha) {
        initOknoK();
        System.out.println("konstruktor> "+ kniha.getPopisKnihy());
        this.kniha = kniha;
    }


    public void initOknoK(){
       knihaOkno = new JFrame("KNIHA");
       knihaOkno.setResizable(false);

       JPanel pravyPanel = new JPanel();
       pravyPanel.setPreferredSize(new Dimension(150, 500));
       pravyPanel.setBackground(Color.red);

       popisky = new JLabel(kniha.getTitul());            HERE IS THE PROBLEM
       //System.out.println("v okne knihz> " + kniha.getTitul());
       gbc.fill = GridBagConstraints.HORIZONTAL;
       gbc.gridx = 1;
       gbc.gridy = 1;
       horniLevyPanel.add(popisky, gbc);       


       knihaOkno.pack();
    }

1 个答案:

答案 0 :(得分:0)

public OknoKniha(Kniha kniha) {
    initOknoK();
    System.out.println("konstruktor> "+ kniha.getPopisKnihy());
    this.kniha = kniha;
}

initOknoK()初始化之前,您正在呼叫this.kniha。字段初始化后移动此调用:

public OknoKniha(Kniha kniha) {
    System.out.println("konstruktor> "+ kniha.getPopisKnihy());
    this.kniha = kniha;
    initOknoK();
}

您可以将final修饰符添加到kniha声明,以避免将来出现此类错误:

private final Kniha kniha;