AWT: Panel durch anderes Panel ersetzen. Neuzeichnen-Problem

Semmerl

Grünschnabel
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:
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:
    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:
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:
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
 
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
 
Zurück