-1

I'm pretty new to Java, and I've never attempted a project like this before. I would like if you guys can help me fix this problem.

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)

problem part of class:

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 Answers1

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

You are calling initOknoK() before this.kniha is initialized. Move this call after field initialization:

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

You can add final modifier to kniha declaration to avoid such mistakes in the future:

private final Kniha kniha;
Piotr Praszmo
  • 17,928
  • 1
  • 57
  • 65