Anderes Panel nach Button-Klick laden

Status
Nicht offen für weitere Antworten.

Transmitter

Mitglied
Hi :)

Ich versuche nach einem Klick auf einen Button ein anderes Panel zu laden.

Ich habe einmal ein JFrame, auf dem ein paar Panel sind ( Navigation, Content, .. )
Nach einem Klick bei Navigation sollte sich eine andere Klasse mit einem anderen Content laden.

Hat da jemand eine gute Idee?

Hatte schonmal nach MVC Frameworks gesucht, aber irgendwie nur Struts gefunden und ich programmiere ja nicht für den Webbereich :(

Vielen Dank schon mal
Bye, Transmitter
 

Transmitter

Mitglied
Ich sitze da jetzt schon ewig dran und komme nicht weiter :-/

Ich habe eine Background Klasse:

Code:
public class Background extends JFrame implements ActionListener

...

private BackgroundPanel getJPanelEast ( )
{
  ????
}
Standardmäßig wird Navigation1.class geladen, das mache ich mit einer switch.
Wenn ich auf einen Button in Navigation1 klicke soll getJPanelEast neu aufgerufen werden, mit dem Wert, der aus dem Button kommt, z.B. 2 für Navigation2.class.

Wie bekomme ich das hin, dass sich getJPanelEast neu aufruft, wenn ich auf einen Button in der Navi klicke?
Die Navi wird von Background importiert und instanziert, quasi als Aggregation.

Hört sich schon fast nach Threads an, oder geht das auch irgendwie anders?

Code:
Navigation1 extends JPanel
{
...
JPanel getNavigation ( )
{
...
}
}

Navigation2 ist ähnlich.
Funktioniert auch ohne Probleme, wenn ich in der switch den case von Hand festlege.

Danke schon mal
Bye, Transmitter[/code]
 

Transmitter

Mitglied
Das muss doch irgendjemand wissen?

Oder kennt jemand noch ein gutes Forum, in dem ich so eine Frage beantwortet bekommen könnte?
 

L-ectron-X

Gesperrter Benutzer
Threads? Unfug! Brauchst Du hier nicht.
Entferne die alte (J)Component mit der remove()-Methode.
Füge dann das neue (J)Panel mit der add()-Methode hinzu.
Rufe zum Neuzeichnen die validate()-Methode auf.
In Ausnahmefällen kann es helfen, danach auch noch die repaint()-Methode aufzurufen.
 

Transmitter

Mitglied
Doch, noch ein Problem habe ich ..

Es sind 3 Objekte, einmal der Background, der die Navigation lädt, und die 2 Navigationen .. wie sollen die denn miteinander kommunizieren?

Kann ein Objekt das ein Attribut eines Objektes ist das "obere" Objekt dazu veranlassen eine Methode aufzurufen?
Also sowas wie parent.method ( ) nur ohne Vererbung?
 

L-ectron-X

Gesperrter Benutzer
Wenn sich Dein Background ums Laden der Navigationen kümmert, übergibst Du nach einem Klick auf einen Button in der gerade aktiven Navigation, einer passenden Methode der Backgorund-Referenz eine Referenz der neu zu ladenen Navigation.
Da schlage ich vor, die übergebene Naviagtions-Referenz in einer privaten Variable in der Background-Klasse zu speichern.
Das heißt auch, dass Du den Konstuktoren der Navigationen eine Referenz Deiner Background-Klasse übergeben musst, damit sie wissen, an wen sie sich wenden müssen.

Code:
//Background-Klasse
private activeNavigation;
private Navigation1 navi1;
private Navigation2 navi2;
...
//im Kostruktor der Background-Klasse
  navi1 = new Navigation1(this);
  navi2 = new Navigation2(this);
...
...
...
//irgendwo in der Background-Klasse
public void setActiveNavigation(JPanel navigation) {
  if(activeNavigation != null)
    getContentPane().remove(activeNavigation);
  activeNavigation = navigation;
  getContentPane().add(activeNavigation);
  validate();
  repaint();
}
Code:
//eine Navigations-Klasse
private Background owner; //Referenz auf die Background-Klasse
...
...
...
public Navigation(Backgound owner) {
  this.owner = owner;
  ...
  ...
  ...
}

So ähnlich, aber doch anders, habe ich das schon mal in einer Klasse implementiert.
Aber Du wirst den Code wahrscheinlich noch an Deine "Umgebung" anpassen müssen. Z.B. LayoutManager o.ä.

Ich hoffe, dass Dir dies weiter helfen wird.
 

Transmitter

Mitglied
Hoffe, das kann ich irgendwie umbauen.

Würdest du sagen, das war ein eher schelchtes Design?
Ich befinde mich damit irgendwie in einer Sackgasse, finde aber auch nicht wirklich eine gute Alternative .. :-/
Kannst du mir da für die Zukunft etwas empfehlen?

Dankesehr schon / noch mal :)
 

L-ectron-X

Gesperrter Benutzer
Schlechtes Design? Hm. Ich habe von Deinem Programm nicht viel gesehen, außer die wenigen Zeilen.
Bei einem guten Design, werden Daten-Klassen von GUI-Klassen getrennt. Funktionalität, Flexibilität und Wiederverwendbarkeit kann durch Einsatz von Interfaces erhöht werden.
Gutes Design bedeutet auch, Klassen zu abstrahieren, also durch Vererbung immer weiter zu verfeinern bzw. zu spezialisieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
M Panel durch ein anderes Panel ersetzen AWT, Swing, JavaFX & SWT 4
S AWT: Panel durch anderes Panel ersetzen. Neuzeichnen-Problem AWT, Swing, JavaFX & SWT 4
I Anderes (schlechteres) Font-Rendering in OpenJDK 8 AWT, Swing, JavaFX & SWT 21
G FX warten bis ein anderes GUI Element ausgewählt wurde AWT, Swing, JavaFX & SWT 8
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
A Methode pausieren bis anderes Ereignis ausgeführt AWT, Swing, JavaFX & SWT 2
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
L JavaFX CSS in ein anderes CSS importieren AWT, Swing, JavaFX & SWT 2
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Image in anderes kopieren AWT, Swing, JavaFX & SWT 0
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
O Swing-MVC: JFrame verstecken und anderes anzeigen AWT, Swing, JavaFX & SWT 10
J 2D-Grafik Bildteile in ein anderes Bild speichern AWT, Swing, JavaFX & SWT 12
J Fenster schließt anderes Fenster AWT, Swing, JavaFX & SWT 4
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
E Fenster schließen und ein anderes öffnen AWT, Swing, JavaFX & SWT 9
Luk10 BufferedImage auf ein anderes BufferedImage zeichnen AWT, Swing, JavaFX & SWT 6
T Swing JFrame blockieren während anderes JFrame offen ist AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Graphics2D object in ein anderes Zeichnen AWT, Swing, JavaFX & SWT 7
P Swing Wie bekomme ich eine Referenz auf ein Objekt das im EDT erzeugt wird? Und anderes... AWT, Swing, JavaFX & SWT 8
R Swing Auf ein anderes jFrame zugreifen? AWT, Swing, JavaFX & SWT 5
Semox Swing JFrame extern erzeugen und in anderes JFrame einbetten AWT, Swing, JavaFX & SWT 7
S Swing: Look and Feel abändern oder für Teilkomponenten anderes LaF setzen AWT, Swing, JavaFX & SWT 2
H anderes font in textarea AWT, Swing, JavaFX & SWT 2
hdi Swing setComponentZOrder() oder doch was anderes? AWT, Swing, JavaFX & SWT 7
U Frame öffnet anderes Frame: Methode auslagern AWT, Swing, JavaFX & SWT 26
H Nulllayout in ein anderes Layout AWT, Swing, JavaFX & SWT 5
G JTable oder anderes? AWT, Swing, JavaFX & SWT 6
J Im JLabel Bild durch anderes ersetzen, ohne dass es 'blinkt' AWT, Swing, JavaFX & SWT 12
S Vorhandene Datei in anderes Verzeichnis schreiben! AWT, Swing, JavaFX & SWT 8
S Wie anzeigen? Jtree oder was anderes? AWT, Swing, JavaFX & SWT 3
C ApplicationWindow Shell minimieren (Anderes Event ausführen) AWT, Swing, JavaFX & SWT 4
D Widget/Control während Laufzeit durch ein anderes ersetzen AWT, Swing, JavaFX & SWT 3
F Datenübergabe von einem JFrame auf ein anderes AWT, Swing, JavaFX & SWT 2
G Listbox, combobox oder was anderes? [swing] AWT, Swing, JavaFX & SWT 4
W Anderes Look And Feel AWT, Swing, JavaFX & SWT 9
S Anderes Look'n'Feel = JTextArea doppelt so gross! AWT, Swing, JavaFX & SWT 13
F DRINGEND! Bild in ein anderes Bild einbinden. AWT, Swing, JavaFX & SWT 9
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M AWT Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 7
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
M JavaFX Slide Panel AWT, Swing, JavaFX & SWT 2
P Swing Panel nicht sichtbar AWT, Swing, JavaFX & SWT 1
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
X Java Panel zeitweise repainten AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
W Swing Nicht-Editierbares Textfeld in Panel in ScrollPane AWT, Swing, JavaFX & SWT 9
B zweidimensionales Buttonarray auf Panel AWT, Swing, JavaFX & SWT 11
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
T LayoutManager GridLayout panel.setSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Panel lässt sich nicht bewegen AWT, Swing, JavaFX & SWT 2
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
K Swing Maus in Panel einsperren AWT, Swing, JavaFX & SWT 8
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
1 Swing Bestimme ob ein Subelement eines panel den Fokus verloren hat AWT, Swing, JavaFX & SWT 2
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
O LayoutManager Panel in Panel "maximieren" AWT, Swing, JavaFX & SWT 2
C AWT Horizontale Linie in einem Panel AWT, Swing, JavaFX & SWT 12
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben