我对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();
}
答案 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;