Die Methode getParent()

Iberion

Grünschnabel
Hallo, ich würde gerne wissen warum das nicht geht und was ich anders machen muss:

import javax.swing.*;
public class Main extends JFrame{
public int Zahl;
public Main() {
setSize(400, 400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
mJFrame blabla = new mJFrame();
}
public static void main(String[] args) {
new Main();
}
}

public class mJFrame extends JFrame{
public mJFrame() {
setSize(300, 300);
setVisible(true);
Main blablub = (Main) getParent();
blablub.Zahl = 10;
}
}

Also eigendlich will ich nur von der einen Klasse auf die andere zugreifen können. Es soll aber keine innere Klasse sein.
 
Denk bitte daran dass Klassennamen in Java am Anfang groß geschrieben werden. Dagegen werden Felder und Variablen wie bei dir "Zahl" am Anfang klein geschrieben.

Um den Code etwas lesbarer darzustellen schliess diesen bitte in [code=java] ...code... [/code] ein.

Zu deinem Problem:
Wenn du von deiner Klasse MJFrame auf die Klasse Main zugreifen willst, dann übergib diese am Besten mit im Konstruktor:

Java:
public class MJFrame extends JFrame{
     private Main m;
     public MJFrame(Main m) {
         super();
         setSize(300, 300);
         setVisible(true);
         this.m = m;
         m.zahl = 10;
     }
}

Noch ein Tipp: Das setVisible(true) gehört nicht in den Konstruktor der MJFrame sondern dies sollte man von aussen steuern können. Besser ist also:

Java:
public class MJFrame extends JFrame{
     private Main m;
     public MJFrame(Main m) {
         super();
         setSize(300, 300);
         this.m = m;
         m.zahl = 10;
     }
}

Java:
public class Main extends JFrame{
       public int zahl;
       public Main() {
             setSize(400, 400);
             setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
             MJFrame blabla = new MJFrame();
             blabla.setVisible(true);
        }

        public static void main(String[] args) {
             Main m = new Main();
             m.setVisible(true);
        }
}
 
Zurück