Antwort
 
Themen-Optionen
Alt 28.02.2006, 14:00 Nach oben    #1
Benutzer
 
Registriert seit: 30.11.2005
Beiträge: 42
Standard Dynamische GUI

hallo,

ich will ein lernprogramm realisieren.

ich habe einen jframe mit jlabel, jtextpane und einen button für vorwärts blättern und zurück blättern.

wenn ich jetzt nach vor blätter soll eine "neue gui" dh. eine andere jtextpane und vielleicht 2 jlabel angezeigt werden. beim zurück blättern soll wieder die vorherige GUI angezeigt werden.

Wie kann ich das realisieren? die inhalte der jeweiligen komponenten liegen in einer datenbank.

kann mir bitte jemand helfen!

danke
risa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.02.2006, 14:06 Nach oben    #2
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 449
Standard

Du könntest die Komponenten in unterschiedlichen Panels speichern, die du dann entsprechend sichterbar/unsichtbar machst.
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.02.2006, 18:51 Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

Oder das CardLayout verwenden, das ist für solche Dinge entwickelt worden.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.
karahead ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.02.2006, 19:09 Nach oben    #4
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Zitat:
Zitat von karahead
Oder das CardLayout verwenden, das ist für solche Dinge entwickelt worden.
Das ist nur bedingt richtig.
Stell dir vor du hast ein Installationsprogramm und klickst dich nach und nach durch.
1. Lizenz akzeptieren
2. Zielverzeichnis auswählen
3. Zu installierende Komponenten auswählen
4. Alles nochmal angezeigt bekommen und mit OK die Installation einleiten.

In diesem Fall wäre ein CardLayout unangebracht


@risa

Eigentlich müßte es funktionieren indem du das ContentPane des Frames neu validierst. Das müßte funktionieren.
Also erstmal den ContentPane holen

java Code:
  1. Container content = this.getContentPane();

Auf content addest du dann dein Panel das du vorher mit den Componenten (JLabel, JTextField...) gefüllt hast.

In dem Moment in dem du addest gehst du wie folgt vor:
java Code:
  1. container.invalidate();
  2. container.removeAll();
  3. container.add(deinJPanel);
  4. container.validate();


Ich hoffe das geht so
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.02.2006, 19:54 Nach oben    #5
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Und hier ein vollständiges Beispielprogramm:

java Code:
  1. /*
  2. * (cc) sparrow (at) developers-guide.net
  3. * [url]www.developers-guide.net[/url]
  4. *
  5. * Licensed under a creative commons license
  6. * some rights reserved
  7. * For details please visit: [url]http://creativecommons.org/licenses/by/2.5/[/url]
  8. *
  9. */
  10.  
  11. import java.awt.Color;
  12. import java.awt.Container;
  13. import java.awt.event.ActionEvent;
  14. import java.awt.event.ActionListener;
  15.  
  16. import javax.swing.JButton;
  17. import javax.swing.JFrame;
  18. import javax.swing.JLabel;
  19. import javax.swing.JPanel;
  20.  
  21.  
  22. /**
  23. * An example code for switching the content of a JFrame.
  24. */
  25. public class GUISwitcher extends JFrame {
  26.  
  27.     /** Defaut serialVersionUID, not important for this example*/
  28.     private static final long serialVersionUID = 1L;
  29.     /** Contains the ContentPane of the Frame and will be validated to update the screen*/
  30.     Container content;
  31.    
  32.     /**
  33.      * Construct for the Frame.
  34.      * Adding first Panel to the content
  35.      */
  36.     public GUISwitcher() {
  37.         super("GUI-Switcher Example");
  38.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  39.         this.content = this.getContentPane();
  40.         updateTheGUI(createPanel1());
  41.     }
  42.    
  43.     /**
  44.      * Update the container by removing all components, adding new
  45.      * components and validate the container
  46.      * @param panel The JPanel which should be on the Frame
  47.      */
  48.     private void updateTheGUI(JPanel panel) {
  49.         content.invalidate();
  50.         content.removeAll();
  51.         content.add(panel);
  52.         content.validate();
  53.     }
  54.    
  55.     /**
  56.      * Will create an example Panel and return it.
  57.      * The Panel contains a JButton which will call
  58.      * "updateTheGUI" to show the second Panel
  59.      * @return The first axample Panel
  60.      */
  61.     private JPanel createPanel1() {
  62.         JPanel panel = new JPanel();
  63.         panel.setBackground(Color.GREEN);
  64.         panel.add(new JLabel("This is panel 1"));
  65.         JButton button = new JButton("Switch to Panel 2");
  66.         button.addActionListener(new ActionListener() {
  67.             public void actionPerformed(ActionEvent e) {
  68.                 updateTheGUI(createPanel2());
  69.             }
  70.         });
  71.         panel.add(button);
  72.         return panel;
  73.     }
  74.    
  75.     /**
  76.      * Will create an example Panel and return it.
  77.      * The Panel contains a JButton which will call
  78.      * "updateTheGUI" to show the first Panel
  79.      * @return The second axample Panel
  80.      */
  81.     private JPanel createPanel2() {
  82.         JPanel panel = new JPanel();
  83.         panel.setBackground(Color.YELLOW);
  84.         JButton button = new JButton("Switch to Panel 1");
  85.         button.addActionListener(new ActionListener() {
  86.             public void actionPerformed(ActionEvent e) {
  87.                 updateTheGUI(createPanel1());
  88.             }
  89.         });
  90.         panel.add(button);
  91.         panel.add(new JLabel("This is panel 2"));
  92.         return panel;
  93.     }
  94.    
  95.     /**
  96.      * The Main-Method will only Construct the Frame, set it's size, center
  97.      * it on the screen and make it visible.
  98.      * @param arguments Arguments from the command-line, not important for this example
  99.      */
  100.     public static void main(String[] arguments) {
  101.         GUISwitcher frame = new GUISwitcher();
  102.         frame.pack();
  103.         frame.setLocationRelativeTo(null);
  104.         frame.setVisible(true);
  105.     }
  106.    
  107.  
  108. }
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.03.2006, 08:44 Nach oben    #6
Benutzer
 
Registriert seit: 30.11.2005
Beiträge: 42
Standard

hallo,

wow.

danke für die zahlreichen antworten. muss mir das jetzt mal ansehen.

lg
risa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.03.2006, 10:12 Nach oben    #7
Benutzer
 
Registriert seit: 30.11.2005
Beiträge: 42
Standard

hallo,

ich scheiter jetzt an was ganz banalem: wie kann ich die frame size ändern?

ich habs jetzt schon mit

this.setSize(800, 600); bzw. mit
frame.setSize(800, 600);

probiert, aber von meinem frame sieht man immer nur den Titelrahmen!

das funktioniert ja immer. warum hier nicht?
risa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.03.2006, 12:04 Nach oben    #8
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Hallo Risa,

das sind leider ein bisschen wenig infos.
Benutzt du mein Beispielprogramm?
Dann mußt du frame.pack() rausnehmen, diese Methode sorgt dafür, dass Java die Größe des Frames automatisch an die darin enthaltenen Components anpaßt.
Ist das Frame noch leer sieht man also nur die Titelleiste.

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.03.2006, 12:32 Nach oben    #9
Benutzer
 
Registriert seit: 30.11.2005
Beiträge: 42
Standard

hallo,

ja, habe deinen code fast gleich gelassen. habe nur ein null-layout gemacht und die komonenten mit setBounds positioniert.

habe frame.pack(); jetzt rausgenommen und frame.setSize(800, 600); geschrieben. funktioniert.

es funktioniert aber im konstruktor genauso. wo macht man es normalerweise?

danke
risa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.03.2006, 13:06 Nach oben    #10
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 520
Standard

Zitat:
Zitat von risa
es funktioniert aber im konstruktor genauso. wo macht man es normalerweise?
Da wo man es benötigt
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Opera cached dynamische Seite dsxs HTML, XML und CSS 11 29.08.2006 10:47
warten auf Threads und Aufbau GUI desaster Allgemeine Java-Programmierung 7 07.09.2005 14:55
GUI Programmierung Java17 Literatur 1 28.02.2005 11:10
GUI Programmierung Java17 Allgemeine Java-Programmierung 11 17.02.2005 21:04
XML Schema GUI Engine (JAXFront) spor Nachrichten 2 05.08.2004 17:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:46 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44