Panel wird nicht ersetzt

Hallo Experten,

vielleicht kann mir jemand weiterhelfen. Ich habe eine GUI-Anwendung mit einem JFrame erstellt. Dieses ist unterteilt
in zwei Bereiche (Panels): Links das Menü-Panel und mittig der „Hauptbereich“. Beim Start der Anwendung soll der
„Hauptbereich“ leer sein. Er enthält daher das „panelEmpty“. Mein anklicken auf das Menü (hier ein Tree) soll das
panelMain mit den Dialogelementen im „Hauptbereich“ dargestellt werden. Leider funktioniert das nicht. Im TreeSelectionListener
greife ich auf die contentpane des JFrames zu, jedoch kann ich das „panelEmpty“ nicht durch das „panelMain“ ersetzen.
Kein Compiler-Fehler, kein Laufzeit-Fehler. Es passiert einfach nichts.

Danke für Tips und Anregungen.
Gruß Ulrich

Folgend der Code in vereinfachter Form:

public class application {
public static void main(String args[]) {
applicationGUI objapplicationGUI = new applicationGUI();
}
}

class applicationGUI extends JFrame {
public static JPanel panelMenu;
public static JPanel panelEmpty;
public static JPanel panelMain;

public static Container objContentPane;

// Constructor
public applicationGUI(){
objContentPane = getContentPane();

// Create Panels
panelMenu = new JPanel();
panelEmpty = new JPanel();
panelMain = new JPanel();

// Define menu panel

TreeMenuListener objTreeMenuListener = new TreeMenuListener();
tree.addTreeSelectionListener(objTreeMenuListener);
panelMenu.add(tree);

objContentPane.add(„West“, panelMenu);

// Define empty dialog panel
objContentPane.add(„Center“, panelEmpty);

setVisible(true);
}

}

class TreeMenuListener implements TreeSelectionListener {
public void valueChanged(TreeSelectionEvent e) {

applicationGUI.objContentPane.add(„Center“, applicationGUI.panelMain);

}
}

Hallo Ulrich,

Vorschlag: lasse das „panelEmpty“ ganz weg und setze dafür das „panelMain“ zu Begin per

 panelMain.setVisible(false);

auf Unsichtbar und mache es nach anklicken des anderen Panels sichtbar.
(Falls du das Frame mit

 this.pack();
 this.show();

erzeugst, das Panel erst danach auf visible = false setzen, da ansonsten die pack-Methode keinen Raum für die Komponente freihält.

gruß
Heavy

Beim Start der Anwendung soll der
„Hauptbereich“ leer sein. Er enthält daher das „panelEmpty“.
Mein anklicken auf das Menü (hier ein Tree) soll das
panelMain mit den Dialogelementen im „Hauptbereich“
dargestellt werden. Leider funktioniert das nicht. Im

ich vermute mal folgendes:
alle grafischen komponenten werden in java defaultmässig
unsichtbar erzeugt. das setvisible(true) auf den frame geht
rekursiv alle komponenten im frame durch und setzt alle auf
sichtbar. wenn du nun später eine komponente einfach so
austauscht, ohne sie explizit sichtbar zu machen, so wird sie
natürlich unsichtbar eingefügt.

ich schätze also, dass ein setvisible(true) auf deinen panel
ausreicht, um ihn anzuzeigen…

erwin