[Java] Swing Menu im Hintergrund vom Panel

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Straight-Edge, 25. März 2008 .

  1. 25. März 2008
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    Swing Menu im Hintergrund vom Panel

    Hi

    Ich habe ein sehr kleines Problem mit großem Ausmaß.

    Ich habe ein MainFrame im BorderLayout mit NetBeans erstellt, indem oben ein Menue zu sehen ist und wenn man unter einem spezifizierten Button im Menue klickt sollte ein jPanel unten erscheinen.

    Jedoch habe ich folgendes Problem. Klicke ich einmal auf "Anwender" erscheint das Menue hinter den ganzen Labels und ScrollPanel. Sie Screenshot

    {bild-down: http://img254.imageshack.us/img254/4673/87961205km0.jpg}

    {bild-down: http://img254.imageshack.us/img254/1954/15689086ub7.jpg}


    und dieses passiert auch mit allen Label, Button und anderes,was ich da einfüge. Aber wenn ich über Login gehe, geschieht alles so, wie ich das will.

    41297968ee4.jpg
    {img-src: //img151.imageshack.us/img151/9980/41297968ee4.jpg}


    ich bin total ratlos.

    Ich schätze es liegt an dem Problem, dass man das Menue irgendwie ein höheren Prioritätslevel zuteilen muss, als BorderLayout.CENTER oder so.

    Hier ist der Code, vom Aufruf

    FUNKTIONIERT

    Code:
     private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) { 
     //Login
     Panel_Login login_Panel = new Panel_Login();
     login_Panel.setVisible(true);
     this.getContentPane().removeAll();
     this.getContentPane().add(login_Panel);
     //this.repaint();
     this.getContentPane().validate();
     this.getContentPane().setVisible(true);
     this.validate();
     this.jMenuBar2.validate();
     this.jMenuBar3.validate();
     } 
    
    und der funktioniert nicht

    Code:
     private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
     //Kunde
     Panel_Kunde kunde_Panel = new Panel_Kunde();
     kunde_Panel.setVisible(true);
     this.getContentPane().removeAll();
     this.getContentPane().add(kunde_Panel);
     this.getContentPane().validate();
     this.getContentPane().setVisible(true);
     this.validate();
     this.jMenuBar2.validate();
     this.jMenuBar3.validate();
     }

    Brauche sehr sehr dringend Hilfe. Ihr seit meine letzte Rettung!

    Gruß SXE
     
  2. 31. März 2008
    AW: Swing Menu im Hintergrund vom Panel

    Dummerweise habe ich keine Ahnung von der Sprache die du programmierst.

    Ich kann mir das ganze nur als ZOrder Problem erklären (sry bin C++ freak)

    1) Versuch 1 - Keine ahnung wie zu lösen...
    Du musst entweder in deiner Gui sagen : ELEMENT X IST VOR ELEMENT Y (wie gesagt, weiß ich nicht ob das in deiner Programmiersprache/Entwicklungsumgebung geht)

    2) Versuch 2 - Erstellen in Reinfolge.
    Erstelle die Fenster in einem ZOrder von unten nach oben.
    Da ich nicht weiß ob du ein ZOrder kennst erklär ichs nochmal :

    Beispiel (Nur ein Schema)

    ----Fenster1 (ERSTELLT) (Liegt unten)
    ----Fenster2 (ERSTELLT) (Liegt automatisch über Fenster1)
    ----Fenster3 (ERSTELLT) (Liegt ... über 2 und über 1)

    dreh vielleicht den aufruf deiner fenster um. Dein Menü sollte ja immer im vordergrund sein.




    Also nochmal, ich kenne die Sprache die du verwendest nicht. Ich hab jetzt mal bissl was hergeleitet , mglw war das hilfreich ^^ aber eher nicht.

    Mfg, inqui
     
  3. 31. März 2008
    AW: Swing Menu im Hintergrund vom Panel

    Heyho Büffel,

    also 2 Möglichkeiten die vielleicht helfen

    1. Adde deine neuen Komponenten mal mit einem Layout! Also :

    Code:
    Private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
     //Kunde
     Panel_Kunde kunde_Panel = new Panel_Kunde();
     this.getContentPane().removeAll();
     this.getContentPane().add(kunde_Panel,java.awt.BorderLayout.CENTER);
     kunde_Panel.setVisible(true);
     this.getContentPane().validate();
     this.getContentPane().setVisible(true);
     this.validate();
     this.jMenuBar2.validate();
     this.jMenuBar3.validate();
     }
    2.Hab das gerade getestet und bei mir funktioniert es so ganz wunderbar:

    In der JFrame (BorderLayout) adde ich in das Center ein neues Panel(BorderLayout).
    Oben in der JFrame kommt das Menu hin.
    Wenn du jetzt auf ein Menuclick reagierst dann :

    Code:
    text kunde_Panel = new text();
     this.jPanel1.removeAll();
     this.jPanel1.add(kunde_Panel,java.awt.BorderLayout.CENTER);
     kunde_Panel.setVisible(true);
     this.validate();
    
    reicht das hier schon und es klappt
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.