Witam
Posiadam prosty program. Na panelu A klikam przycisk. Usuwane są wszystkie komponenty, panele itp. Dodawany jest panel B. Na panelu B, po wciśnięciu przycisku chcę wrócić do panelu A i mam problem:
Kod przycisku w panelu B i pola:
Panel1 panel1;
PanelMain pm;
Panel1 p1;
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pm.con.removeAll();
pm.con.add(p1);
pm.con.validate();
p1.step();
repaint();
}
});
Kod klasy zawierającej Panel1 oraz Container:
public class PanelMain {
public static Container con;
public FrameM frameM;
public Panel1 panel1;
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
FrameM frameM = new FrameM();
System.out.println("Starting....");
}
});
}
public void step() {
// TODO Auto-generated method stub
}
}
class FrameM extends JFrame{
FrameM(){
createGUI();
}
Container con = getContentPane();
Panel1 panel1 = new Panel1();
private void createGUI() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setBounds((dim.width)/4, (dim.height)/6, 600, 800);
this.setTitle("");
this.setResizable(false);
this.setVisible(true);
panel1.setLayout(null);
//
b4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Notepad np = new Notepad();
con.remove(panel1);
con.add(np);
con.validate();
np.step();
repaint();
}
});
//
//kod
con.add(panel1);
panel1.add(b1);
panel1.add(b2);
panel1.add(b4);
panel1.add(b3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
//
class Panel1 extends JPanel {
public void step() {
}
public void paintComponent(Graphics g)
{
//
g.drawImage(bg, 0, 0, null);
//
}
}
//static fields
private JButton b1 = new JButton("");
}
Błąd, który otrzymuje po kliknięciu na przycisk w Panelu B:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ORG.Notepad$1.actionPerformed(Notepad.java:87)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)