Zu welchem Zeitpunkt sind Methoden anwendbar

BlubBlub

Bekanntes Mitglied
Hi,

ich habe folgenden Code geschrieben und dabei verstehe ich eine Sache nicht.
Warum liefert mir der Befehl System.out.println(myJFrame.getMyPanel().getMyPanelVariable())
eine NullPointerException während System.out.println(myPanel.getMyPanelVariable()) und System.out.println(myJFrame.getMyVarialbe()) dies nicht tut?


Java:
public class Starter 
{
	public static void main(String[] args)
	{
		new MyJFrame();
	}
}

Java:
public class MyJFrame extends JFrame
{
	private String myVariable;
	private MyPanel myPanel;
	
	public MyJFrame()
	{
		super();
		
		myVariable = "myVariable";
		myPanel = new MyPanel(this);
		
		setSize(500, 700);
		setVisible(true);
	}
	
	public String getMyVarialbe()
	{
		return this.myVariable;
	}
	
	public MyPanel getMyPanel()
	{
		return this.myPanel;
	}
}

Java:
public class MyPanel extends JPanel
{
	private String myPanelVariable;
	
	public MyPanel(MyJFrame myJFrame)
	{
		super();
		myPanelVariable = "myPanelVariable";
	
		JButton button = new JButton("button");
		button.addActionListener(new MyActionListener(myJFrame, this));
	}
	
	public String getMyPanelVariable()
	{
		return this.myPanelVariable;
	}
}

Java:
public class MyActionListener implements ActionListener {

	
	public MyActionListener(MyJFrame myJFrame, MyPanel myPanel)
	{
		System.out.println("myJFrame.getMyVarialbe(): " + myJFrame.getMyVarialbe());
		System.out.println("myPanel.getMyPanelVariable(): " + myPanel.getMyPanelVariable());
		System.out.println("myJFrame.getMyPanel().getMyPanelVariable(): " + myJFrame.getMyPanel().getMyPanelVariable());
	}
	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub

	}

}
 
Zu dem Zeipunkt zu dem der Konstruktor MyPanel aus dem Konstruktor der MyJFrame-Klasse aufgerufen wird, ist die Variable MyJFrame.myPanel noch null. Das kann auch nicht anders sein, denn die Variable wird ja erst durch die vom MyPanel-Konstruktor erzeugte Instanz belegt. Hier handelt es sich also um ein Henne-Ei-Problem.

Ebenius
 

Neue Themen


Zurück
Oben