JPanel - Aufruf bzw. Zuweisungsproblem

  • Themenstarter Themenstarter Java-Freak
  • Beginndatum Beginndatum
J

Java-Freak

JPanel - Neues Panel aus Panel aufrufen

Hallo,

folgendes ist umgesetzt:
Habe ein JFrame als Grundgerüst.
Darin befindet sich mit mittels BorderLayout verteilt:

JMenuBar
WEST - MenuePanel
CENTER - jScrollPane1

Unterscheidliche Daten werden auf/über Panels in eigenen Klassen erzeugt.
Das MenuePanel beinhaltet eine eigene Menüstruktur (Linksliste). Über die JLabels rufe ich durch ActionListener die einzelnen Panels auf.
So wird z. Bsp die Klasse/Panel Stammdaten auf der jScrollPane1 (im Centerbereich) angezeigt/aufgerufen.


Auszug aus dem MenuePanel:

JLabel
Code:
jLabelStammdaten.setText("Stammdaten");
jLabelStammdaten.setBorder(javax.swing.BorderFactory.createEmptyBorder(	4, 1, 2, 1));
jLabelStammdaten.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {LabelStammdatenMouseClicked(evt);}  );

ActionListener - MouseClicked
Code:
private void jLabelStammdatenMouseClicked(java.awt.event.MouseEvent evt) {
   ViewStammdaten stammdaten = new ViewStammdaten();
   jScrollPane1.setViewportView(stammdaten);
   stammdaten.setVisible(true);
}


Das klappt soweit ganz gut und ich kann die einzelnen Panels/Klassen aufrufen und zur weiteren Bearbeitung anzeigen lassen.

Mein Problem dabei ist, das ich z.Bsp. im Stammdaten-Panel einen Button habe der ein neues Panel auf der jScrollPane1 aufrufen soll/muss auf dem sich auch das stammdatenPanel befindet. Das funktioniet nicht wirklich, bzw. weiß ich nicht wie ich das ausführen kann.

Ich befinde mich ja (wie schon gesagt) in einer eigenen Panel-Klasse und nicht auf dem WEST - MenuePanel.
Heist ich weiß nicht wie ich an dieser Stelle das aufzurufende Panel auf die jScrollPane1 setzen soll/kann.
Das aktuelle Panel kann ich ja leicht mit this.setVisible(false); ausblenden, wie rufe ich jetzt allerdings das neue Panel auf ?
 
Zuletzt bearbeitet von einem Moderator:
OK
meine Suche ergab 297 Treffer auf JPanel. Hab diese ohne Erfolg durchgeschaut.

Und wie es der Teufel will, kam mit der Beitragserstellung im unteren Bereich der Hinweis auf ähnliche Beiträge..

http://www.tutorials.de/forum/swing-awt-swt/263359-jpanel-instanz-einen-jpanel-laden.html

Obiger Beitrag hat meine Frage schon ganz gut beantwortet.

Code:
 private void jButtonXYZMouseClicked(java.awt.event.MouseEvent evt) {
 this.removeAll();
 ViewNeuesPanel test = new ViewNeuesPanel();
 this.add(test);
 this.validate();
 this.repaint(); 
}


Es funktioniert!
Allerdings habe ich in meinen Panels einen EmptyBorder drinnen.
Bei Aufruf des neuen Panels wird (wie es scheint) das neue Panel "im" alten gezeichnet, denn der EmptyBorder ist nun doppelt so groß. :mad:

Rufe ich nun noch ein drittes Panel auf habe ich einen drei mal so großen Rand:eek:

Nicht ganz das was ich brauche obwohl es einen guten Ansatz hat.
Hat jemand vielleicht noch eine gute alternative dazu



Ich hab bei der Suche auch ein paar Beiträge über das CardLayout gelesen. Wie umfangreich ist denn dieses? Gibt es dazu eine gute Starthilfe/Anleitung?
Und vor allem habe ich schon 14 Oberflächen (Panels) durch das MenuePanel umgesetzt und die Frage ist, ob das CardLayout ingetriert werden kann ohne das ich Tage der Anpassung in Kauf nehmen muss..


Wie gesagt,
für jegliche Ansätze, Hilfestellungen und Beiträge bin ich dankbar!
 
Zuletzt bearbeitet von einem Moderator:
Zurück