![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Hallo,
ich möchte gerne Folgendes realisieren. Ich habe ein Applet, welches in drei Teile eingeteilt ist. Diese Einteilung erreiche ich durch dieses GridBagLayout PHP-Code:
Ich möchte nun also das linke Panel variabel machen. Beim Start des Applets soll PANEL_EINS angezeigt werden und nachdem dort ein Button angeklickt wurde soll PANEL_ZWEI angezeigt werden. Hm. Ich weiß jetzt aber gerade nicht, wie ich das am besten "designe". Wäre über Tipps dankbar. Grüße Ben. |
|
|
|
|
|
Nach oben #2 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Gib dem Panel nen CardLayout und pack die beiden anderen Panel da rein.
P.S.: Mach dein Leben einfacher, lern EGBConstraints |
|
|
|
|
|
Nach oben #4 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
http://java.sun.com/docs/books/tutor...yout/card.html
Das sollte dir doch helfen, oder? Der andere Link bezog sich nur auf den häßlichen GridBagLayout-Code. |
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Interessant .. aber steht an dieser Stelle hier mal nicht zur Debatte.
Klare Frage: Kannst Du meine Frage beantworten? Wenn ja (was ich ehrlich gesagt glaube!), dann wäre ich erfreut. Wenn nein, einfach nichts schreiben. Ich frag schon nach LayoutManagern etc., wenn die Zeit dazu gekommen ist! Grüße Ben. |
|
|
|
|
|
Nach oben #6 | |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Ähm... ok. In dem Fall habe ich wohl die Frage falsch verstanden.
Wo, wenn nicht da, ist das Problem? Zitat:
Diese Layout, dass ich verlinkt habe, zeigt nur eine Komponente an und es ist spielend leicht möglich, damit das zu realisieren, was du vorhast. Nämlich, nach klick auf einen Button, eine andere Komponente anzuzeigen. Dem Button gibste einfach nen ActionListener, der das macht und gut ist. Hättest du jetzt gesagt, die Anzahl der Panel, die dort angezeigt werden sollen, ist variabel, dann wäre das was anderes, aber so ist das doch eigentlich völlig klar. |
|
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Hi danke,
war ein paar Tage nicht online, deshalb erst jetzt die Antwort. Ich werde mir gleich mal das CardLayout anschauen .. und weil Dir zuliebe in Kürze (in ein paar Tagen) auch mal den Blogeintrag. Grüße Ben. |
|
|
|
|
|
Nach oben #8 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Sorry für das Doppelposting, aber ich wollte nochmal auf mich aufmerksam machen.
Also. Ich möchte noch kurz erläutern, warum ich in diesem Forum poste und nicht im Fachforum für GUI-Programmierung mit Java. Ich habe irgendwie diesen Controller-Gedanken im Kopf und dass man den an dieser Stelle irgendwie einbringen "sollte". Es kann sehr gut sein, dass ich einfach falsch liege und somit eher in oben angesprochenem Forum hätte posten sollen, aber ich bin halt derzeit noch der Ansicht, dass ich nicht so ganz falsch liege. Ich habe mir nun mal das SUN-Tutorial zur Verwendung des CardLayouts angeschaut und habe das Beispiel ausgetestet und etwas gespielt ... letztlich ist das irgendwie nicht ganz das, was ich möchte, so dass ich die Vermutung habe, dass ich mich vielleicht nicht so wirklich gut ausgedrückt habe. Ich habe vor ein Fenster in drei Abschnitte zu teilen. Ich dachte, dass ich das durch obigen Java-Code deutlich gemacht hätte. Ganz oben ist also eine Toolbar, links ein Panel und rechts ein Panel. Die ToolBar und das rechte Panel bleiben fix. Da ändert sich nichts. Das linke Panel möchte ich verändern. Im Beispiel. Das Fenster wird angezeigt und im linken Panel können Einstellungen gemacht werden. Dann klickt man auf "weiter" (einen Button) und dann ändert sich das linke Panel und dort wird halt "etwas" angezeigt. Weiterhin switcht ein Button der ToolBar um, also setEnabled(true). So. Ich könnte das durchaus irgendwie lösen (denke ich jetzt einfach mal), aber ich würde eben gerne wissen, wie man sowas denn elegant löst. Hoffe, dass ich mich besser ausdrücken konnte, so dass Ihr vielleicht noch ein paar mehr Ideen für mich habt. Das CardLayout verstehe ich derzeit nicht so, dass es das realisieren könnte, was ich gerne hätte. Ist dem doch so .. dann erbitte ich ein kleines Beispiel. Ich danke Euch. Grüße Ben. |
|
|
|
|
|
Nach oben #9 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Code:
public class WizardPanel extends JPanel {
public WizardPanel() {
super(new BorderLayout());
// die dinger musste dir irgendwie beschaffen
add(staticPanel, BorderLayout.LINE_END);
add(toolBar, BorderLayout.PAGE_START);
add(configurationPanel, BorderLayout.LINE_START);
weiterButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
WizardPanel.this.remove(configurationPanel);
WizardPanel.this.add(otherPanel, BorderLayout.LINE_START);
toolBarButton.setEnabled(true);
}
});
}
}
Ein Controller wäre dann sinnvoll, wenn du nen komplexeren "Wizard" entwerfen willst, denn du wiederverwerten kannst. In deinem Fall sind die Sachen, die du haben willst, aber so banal, dass sich das überhaupt nicht rentieren würde. Dafür musst du noch nichtmal das CardLayout bemühen, weil's noch nichtmal nen "Zurück"-Button gibt. Aber kann auch sein, dass ich dich (immer noch) völlig falsch verstehe. Wenn's das oben auch nicht war, dann weiß ich auch nicht. |
|
|
|
|
|
Nach oben #10 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Okay. Das teste ich aus. Danke
Warum nennt man das Ding Wizard? .. also .. hat das irgendeinen Grund oder machst Du das nur gerade so? EDIT: Bzw. der Button liegt ja im "configurationPanel" ... kann ich dann einfach so auf den zugreifen? :-/ ... verwirrt mich jetzt irgendwie.
__________________
Mehr TuS Koblenz geht nicht ... Aktuell ... - Neue Gegner für die TuS: 1.FC Nürnberg - 5 neue Gegner 2008/09 - Informationsveranstaltung für Mitglieder - Förderkasse füllt sich - B-Jugend Rheinlandpokalfinale terminiert - A-Jugend I gewinnt Rheinlandpokal Geändert von Ben (14.02.2006 um 14:20 Uhr). |
|
|
|
|
|
Nach oben #11 |
|
Erfahrener Benutzer
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
|
wenn ich das jetzt nicht völlig falsch verstanden habe, ist das linke panel in etwa ein wizard. d.h. zwigt mehrere inhalte auf verschiedenen seiten an. ein weiter und zurück button dient als navigation....
auf diese art könntest du das ganz gut lösen Code:
WizardComponent[] pages = new WizardComponent[]{
new WelcomePanel(),
new InitialSettingsPanel(),
new ScreenSettingsPanel(),
new FinishSettingsPanel()
};
WizardContainer wiz = new WizardContainer(pages);
frame.getContentPane().add(wiz,BorderLayout.WEST);
beim wechsel der panels wird beim gerade angezeigten panel die methode finishWizardComponent und beim als nächstes anzuzeigenden die methode startWizardComponent aufgerufen. Und der wechsel wird im Container etwa so vollzogen. Code:
remove(currentComponent); currentComponent = getNextWizardComponent(); add(currentComponent); validate(); @page da macht man zwischen dem schreiben mal ne zigaretten und esspause und schon kommt einem jemand zuvor... isch poste das jetzt trotzdem. |
|
|
|
|
|
Nach oben #12 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
@beny: So hatte ich es auch verstanden, ja.
Nur wenn er nur 2 Panel anzeigen will, ist sowas echt zuviel. @Ben: Hum. Du kannst auf den JButton zugreifen. Gar kein Thema. Warum man das Ding Wizard nennt? Ähm... gute Frage... Ich schätze mal, dass einer der ersten Wizards einen kleinen Zauberer als Bild irgendwo hatte. Im Prinzip ist ein Wizard das, was dir in Eclipse ne neue Klasse erzeugt, oder ein neues Projekt, oder oder oder. |
|
|
|
|
|
Nach oben #13 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Zitat:
Jou. Ich denke, dass ich damit auf dem richtigen Weg bin. Ich muss jetzt nur irgendwie noch das BorderLayout ersetzen Kleinere Haken gibt es aber noch. So wird z.B. nach dem Klick auf den "weiter"-Button irgendwie keine Aktualisierung durchgeführt. Ich muss aber auch ehrlich gestehen, dass ich nicht ganz verstanden habe, was in der actionPerformed-Methode passiert bzw. was das für ein Zugriff ist Hier erstmal die Klasse WizardPanel PHP-Code:
PHP-Code:
Bei mir sieht das so aus, als würde das Config.Panel "stocken" und die Aktualisierung nicht stattfinden. Langsam nerv ich, was? *g* Danke nochmals .. EDIT: Ich denke mal, dass das Thema mittlerweile besser in das Java-GUI-Forum passt. Aus diesem Grunde ... Der Thread wurde verschoben, wegen ... ... Postings im falschen Forum.
__________________
Mehr TuS Koblenz geht nicht ... Aktuell ... - Neue Gegner für die TuS: 1.FC Nürnberg - 5 neue Gegner 2008/09 - Informationsveranstaltung für Mitglieder - Förderkasse füllt sich - B-Jugend Rheinlandpokalfinale terminiert - A-Jugend I gewinnt Rheinlandpokal Geändert von Ben (14.02.2006 um 15:38 Uhr). |
|
|
|
|
|
|
Nach oben #15 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Ohweia
... ich hab jetzt aber validate() anstatt invalidate() aufgerufen. Gut. Fein Ich werde eventuell nochmals auf diesen Thread zurückkommen. Werde ja sicherlich noch das ein oder andere Problem damit haben vom BorderLayout auf einen etwas "eleganteren" LayoutManager zu wechseln. Danke erstmal Grüße Ben. |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Swing Layouts erklären | ex³ | Desktop-Applikationen und Grafik | 11 | 03.08.2006 14:30 |
| Zwei unabhängige Teile in einem Applet realisieren | Ben | Desktop-Applikationen und Grafik | 13 | 10.02.2006 09:57 |