JMenu Grundlagen

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hi!
Ich hab da mal eine Frage zu einer Form mit einem Menü!
Ich habe einige Menüpunkte und bei jedem Menüpunkt müssen andere Komponenten auf der Form dargestellt werden. D.h. einmal werden Daten in einer jtable dargestellt, bei einem anderen Menüpunkt sollen daten in Textfelder usw. eingegeben werden.
Nun zu meiner Frage: Muss ich da für jeden Menüpunkt ein eigenes JFrame aufrufen auf der diese Komponenten drauf sind, oder geht das irgendwie dynamisch auf einer form? oder hab ich da überhaupt einen denkfehler?

Bin dankbar für jede Hilfe!
greetings!
 

Niki

Top Contributor
Bitte nicht von forms reden wenn es um JPanels geht. Bei forms denkt jeder an Web-Anwendungen (ich zumindest).

Klar kannst du das realiseriern und zwar mit CardLayout. Für jede Eingabemaske bastelst du dir einen JPanel (also von diesem ableiten). Diese JPanels fügst du dem CardLayout hinzu. Durch klicken des jeweiligen Menüs kannst du dann den jeweiligen JPanel über das CardLayout anzeigen lassen.
 
G

Gast

Gast
Thx, das ist genau das was ich gesucht habe!
Tja, das mit der form is wohl auch der Grund warum ich beim googlen nicht so erfolgreich war :? ... Also panels...
Hast du vl. noch ein Codebeispiel für mich wie ich die panels anzeigen und wieder verschwinden lasse?
 

Niki

Top Contributor
Zuerst erzeugen der Panels und dann beim CardLayout hinzufügen:

Code:
private CardLayout cl = null;


//irgendwo im Konstruktor aufrufen....
public void guiInit(){
  cl = new CardLayout();

  MyPanel1 myPanel1 = new MyPanel1();
  MyPanel2 myPanel2 = new MyPanel2();
  MyPanel3 myPanel3 = new MyPanel3();

  final Container cont = getContentPane();

  cont.setLayout(cl);

  cl.addLayoutComponent(myPanel1, "1");
  cl.addLayoutComponent(myPanel2, "2");
  cl.addLayoutComponent(myPanel3, "3");


  //MenuBar aufbauen und Listener registrieren....

  JMenuItem jMI1 = new JMenuItem("1");
  jMI1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
      cl.show(cont, "1");
    }
  });
}

Ich bin mir jetzt nicht 100% sicher ob das funktioniert (habs nicht ausprobiert), aber ich denke schon. Probiers einfach aus. Wenn nicht spiel ich mich halt ein bisschen damit.
 
G

Gast

Gast
Alles klar!, habs hinbekommen!
Mich hat dein code ein wenig verwirrt weil ich das GUI im designer von netbeans erstellt hab, und nicht dynamisch im code. Hab dort ein Panel auf das CardLayout gesetzt, und die anderen panels einfach reingeschoben. Danach ist eigentlich nur mehr folgender Code fällig:


Code:
CardLayout cl = (CardLayout)(this.jMutterpanel.getLayout());
cl.show(this.jMutterpanel, "<Kartenname des zu zeigenden Panels>");



und da is es...

Danke für eure Hilfe!!!
cu
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben