Steuerung per Menue

Hai, Javalinge,

ich steh schon wieder mit allen vier Pfoten auf der Leitung…

Ich bastel hier an einer Anwendung, die diverse Formulare zwecks Dateneingabe hat. Nun dachte ich mir, ich lade alle Formulare in JPanels in das Fenster und blende die jeweiligen Formulare per Formularname.visible() aus dem Menue heraus ein oder aus…
Tja - nur wie greif ich jetzt auf die JPanels zu?
Weiß jemand einen Schnipsel Beispielcode oder ne Website, wo steht, wie’s geht? Ich find immer nur Tonnen von Javascript-Kram und wenn ich mal auf Java stoße, dann stehen da nur die Datei-Funktionen (speichern, schließen…)

Gruß
Sibylle

Tja - nur wie greif ich jetzt auf die JPanels zu?

Naja, du wirst ja wohl irgendwo eine Klassenvariable haben, unter der du das JPanel gespeichert hast. Die brauchst du ja nur hernehmen. Wenn du keine hast, dann wirst du wohl eine dafür hernehmen müssen.

Hai, Auseinandernehmer,

Naja, du wirst ja wohl irgendwo eine Klassenvariable haben,
unter der du das JPanel gespeichert hast. Die brauchst du ja
nur hernehmen. Wenn du keine hast, dann wirst du wohl eine
dafür hernehmen müssen.

ich befürchte, ich hab da Mist zusammenkonstruiert und mich ziemlich verbastelt…
Ganz grob:

public class Fenster
{
 public static JPanel eingabeForm()
 { _Formular zusammenbasteln_
 return form }
 public static JMenuBar menueLeiste()
 { _Menueleiste erstellen_
 return menue }
 public static JFrame neu()
 { _Fenster erstellen und zusammensetzen_ 
 (ob ich das jetzt hier, oder in der Main einbinde ist Wurst - 
 das Menue mault mich an, 'eingabeFormular' nicht zu kennen 
 (logisch))
 JPanel eingabeFormular = Fenster.eingabeForm();
 f.add(eingabeFormular,BorderLayout.CENTER); 
 return f }
 public static void main( String[] args )
 { JFrame f = Fenster.neu(); } 
}

Wenn ich Menue und Formular als eigene Klassen konstruiere, bin ich doch auch nicht weiter?!

Wenn ich einen „richtigen“ Quelltext zu Gesicht bekäme…

Gruß
Sibylle

public class Fenster
{
**public static JPanel eingabeFormular;**

 public static JPanel eingabeForm() { 
_Formular zusammenbasteln_
 return form 
 }

 public static JMenuBar menueLeiste() { 
_Menueleiste erstellen_
 return menue 
 }

 public static JFrame neu()
 { _Fenster erstellen und zusammensetzen_
 (ob ich das jetzt hier, oder in der Main einbinde ist Wurst -
 das Menue mault mich an, 'eingabeFormular' nicht zu kennen (logisch))
**eingabeFormular** = eingabeForm();
 f.add(eingabeFormular,BorderLayout.CENTER);
 return f 
 }

 public static void main( String[] args )
 { JFrame f = Fenster.neu(); }

}

Dir fehlte in deiner Version eine Variable, die eine Referenz auf dein Formular hält. Mit obiger Version kannst du einfach

 Fenter.eingabeFormular.setVisible(true/false);

aufrufen.

Wenn ich Menue und Formular als eigene Klassen konstruiere,
bin ich doch auch nicht weiter?!

Weiter kommst du, wenn du eine Referenz auf dein Formular in einer Variable hast, auf die du auch zugreifen kannst aus der Methode die beim Klicken auf einen Menüeintrag aufgerufen wird.

Generell:
Es wäre gut, wenn du nicht alles static machen würdest. Wozu soll das überhaupt gut sein? Du programmierst mit Java wie mit einer prozeduralen Sprache. Java ist aber Objektorientiert. Nutze das doch!

1 Like

Hai, deconstruct,

…eine Variable,…
…alles static…
…prozeduralen Sprache…

*Kopf-auf-Tisch-hau*
ich wusste doch, daß ich da irgendwie auf dem Holzweg war (was mich nicht hinderte, fröhlich voranzustürmen)

Gruß und Danke
Sibylle