# Die Methode getParent()



## Iberion (27. Oktober 2007)

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.


----------



## zeja (28. Oktober 2007)

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:


```
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:


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


```
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);
        }
}
```


----------



## Iberion (28. Oktober 2007)

danke dir, hat mir sehr geholfen


----------

