Zdravím.
Snažím se o vytvoření třídy rozšiřující JFrame. Mým cílem je mít třídu "FrameWithMenu", od které budou odvozeny všechny formuláře v programu. Jedinou změnou by mělo být, že potomek třídy "FrameWithMenu" bude formulář s menu v horní části. Víc Vám to asi osvětlí kód:
public class FrameWithMenu extends javax.swing.JFrame {
protected JMenuBar MainMenuBar ;
protected JMenu MainMenu;
protected JPanel Panel;
public FrameWithMenu(String title) throws HeadlessException {
super(title);
super.setLayout(new BorderLayout());
MainMenuBar = new JMenuBar();
MainMenu = new JMenu("Menu");
super.add(MainMenuBar, BorderLayout.NORTH);
MainMenuBar.add(MainMenu);
MainMenu.add(new JMenuItem("Item"));
Panel = new JPanel();
super.add(Panel);
}
@Override
public Component add(Component c)
{
return Panel.add(c);
}
@Override
public void setLayout(LayoutManager lm)
{
this.Panel.setLayout(lm);
}
Jde mi tedy o to aby potomek FrameWithMenu byl normální formulář s menu v horní části, a metody setLayout() a add() aby pracovali místo s celým formulářem pouze s panelem v něm vloženým.
Problém nastává u metody setLayout(). Při spuštění programu ve kterém vytvořím a zobrazím instanci této třídy se mi objeví nullPointerException. Mohl by mmi někdo poradit co dělám špatně? Obsah metody main a detail vyjímky viz níže:
public static void main(String[] args) {
FrameWithMenu RBC = new FrameWithMenu("aa");
RBC.setVisible(true);
}
Exception in thread "main" java.lang.NullPointerException
at GUI.FrameWithMenu.setLayout(FrameWithMenu.java:56)
at java.awt.Window.init(Window.java:492)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:224)
at GUI.FrameWithMenu.<init>(FrameWithMenu.java:29)
at Main.Main.main(Main.java:23)
Java Result: 1
Předem děkuji.