tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1646
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Semmerl Semmerl ist offline Grünschnabel
    Registriert seit
    Jul 2004
    Beiträge
    3
    Hab ein großes Problem.
    Will ein Panel mit einem anderen Panel ersetzen, jedoch wird es mir nicht neu gezeichnet.

    //Mit dieser Methode füge ich einfach mal drei Panels zu meinem übergeordneten Panel hinzu.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    private Panel getPanel() {
            if (panel == null) {
                panel = new Panel();
                panel.setLayout(new BorderLayout());
                panel.add(getPanel1(), java.awt.BorderLayout.NORTH);
                panel.add(getPanel2(), java.awt.BorderLayout.CENTER);
                panel.add(getPanel3(), java.awt.BorderLayout.SOUTH);         
            }
    return panel;
    }

    //Diese Methode setzt mir das Panel panelmiddle mit einem Middlepanel -->Dies ist eine Klasse, die von einem Panel abgeleitet ist und auf der sich verschiedene Grafiken befinden
    Code :
    1
    2
    3
    4
    5
    6
    7
    
        private Panel getPanel2() {
            if (panelmiddle == null) {
                panelmiddle = new Middlepanel();
                panelmiddle.setLayout(new FlowLayout());        
            }
            return panelmiddle;
        }


    Nun möchte ich dieses panelmiddle ersetzen mit einem neuen Panel, dass ich von einer anderen Klasse abgeleitet habe. Dazu rufe ich, nachdem ich auf dem Middlepanel einen Button per Mouse geklickt habe die Methode getscanpanel() auf und diese liefert mir nun eben ein neues Panel zurück und sollte eigentlich das Panel neu zeichnen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    public void getscanpanel()
        {
            this.panel.remove(panelmiddle);
            panel.add(getPanelscan(), java.awt.BorderLayout.CENTER);
            this.repaint();
            panel.repaint();
            panel.paint(this.getGraphics());
            panel.update(this.getGraphics());
        }

    //Die Methode getPanelscan() schaut so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    private Panel getPanelscan() {
            if (panelmiddle_scan == null) {
                panelmiddle_scan = new Scanpanel();
                this.panelmiddle_scan.setLayout(new FlowLayout());
                this.panelmiddle_scan.setVisible(true);
                this.panelmiddle_scan.repaint();
                
            }
            return panelmiddle_scan;
        }

    Doch leider passiert hier nichts und das Panel wird nicht ersetzt. Habe schon alles versucht (z.b validate oder sämtliche Sachen mit repaint und komme aber nicht drauf, wieso er mir das nicht updatet. Hoffe ihr könnt mir hier helfen und ich hoffe, die Code Ausschnitte genügen
     

  2. #2
    Semmerl Semmerl ist offline Grünschnabel
    Registriert seit
    Jul 2004
    Beiträge
    3
    Hab zumindest jetzt mal geschafft, dass das eine Panel verschwindet und das andere auftaucht, allerdings erst wenn ich einmal auf den Rand des Frames klicke (also ihm gewissermaßen einen Resize des Frames vortäusche)

    Wie kann ich das machen, dass das neue Panel automatisch erscheint?

    mfg
    Andy
     

  3. #3
    Solan Solan ist offline Rookie
    Registriert seit
    May 2005
    Beiträge
    8
    probier mal .setVisible(true), requestFocus() oder moveToFront() aus
     

Ähnliche Themen

  1. Image From Panel to Panel
    Von Aprikose im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 25.09.09, 13:54
  2. Problem mit Panel
    Von dlooney im Forum .NET Windows Forms
    Antworten: 3
    Letzter Beitrag: 15.04.09, 20:29
  3. Antworten: 0
    Letzter Beitrag: 12.04.08, 15:43
  4. Panel in JTabbedPane, vom Panel aufs frame zugreifen.
    Von che nino im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 08.09.07, 21:00
  5. Unterschied: 'setContentPane(panel)' und getContentPane().add(panel);
    Von the_skywalker im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 25.01.05, 12:23