GUI

Status
Nicht offen für weitere Antworten.

ru49

Mitglied
Hallo!
Ich möchte auf Knopfdruck die Anzeige in meinem Fenster wechseln!
Wenn ich das Programm starte soll sich ein Fenster mit Textfeldern öffnen. In diesem Fenster befindet sich ein JButton Fenster mit der Aufschrift next. Dieser soll bewirken, dass ein anderer JPanel in meinem Fenster angezeigt wird! Dieser JPanel benötigt aber die Eingabewerte aus dem ersten, um die Anzahl der Textfelder festzulegen.
Ich hab dies über die Methode actionperformed() versucht. Dies ist mir aber nicht gelungen!

Ich bitte um Hilfe!
Gruß Ru49
 

HAOSK

Mitglied
wozu?
wenn die anzahl d. Aufrufe erst zum Laufzeit klar werden,
so kannst du doch eine JOP mit

public static String showInputDialog(
Component parentComponent,
Object message,
String title,
int messageType
)

solange aufrufen, bis alles geklärt ist ;-)

rem. message => deine Frage;
messageType => in deinem Fall jopError.PLAIN_MESSAGE...

rem: jpoError = JOptionPane ;-)
 

ru49

Mitglied
Das ist aber nicht besonders benutzerfreundlich. Ich hätte gerne ein Fenster, in dem alles abgefragt wird! So muss ich ja alles einzelnd machen.
Sonst hätte ich schon JOptionPane benutzt!
Das soll ungefähr so aussehen wie bei einer Installation eines neuen Programmes unter Windows! Ich gebe was ein dann drücke ich auf Button "next" und ich komme zum nächsten Fenster!
 

L-ectron-X

Gesperrter Benutzer
Du kannst das in Verbindung mit einem CardLayout lösen.
Du bereitest verschiedene Panels vor, die angezeigt werden sollen, am besten als extra Klassen, so ist das Ganze übersichtlicher, austauschbarer und weniger fehleranfällig.
Die eingegebenen Daten sammelst du in (globalen) Instanzvariablen, die du dann einem beliebigen Panel oder einer anderen Klasse, die die Eingaben weiterverarbeiten soll zur Verfügung stellen kannst.
Beim Klick auf den "Next"-Button liest du alle eingegebenen Daten aus dem gerade angezeigten Panel aus, speicherst die Daten in den Instanzvariablen und holst mit Hilfe des CardLayouts das nächste Panel nach vorne. Diesem Panel übergibst du die benötigten, ausgelesenen Daten.

Alternativ dazu benutzt du ein BorderLayout und löscht mit der remove()-Methode das Panel aus dem Fenster. Danach setzt du mit der add()-Methode das neue Panel in ins Fenster und rufst die validate()-Methode zum Neuzeichnen auf.
 

Illuvatar

Top Contributor
Ein CardLayout wäre hier auf jeden Fall sinnvoll.

Aber der Vollständigkeit halber, falls das mal jemand liest: man kann auf ein JOptionPane auch andere Komponenten hinzufügen. Beim showInputDialog wird das Object[] laut API wie folgt interpretiert:
A descriptive message to be placed in the dialog box. In the most common usage, message is just a String or String constant. However, the type of this parameter is actually Object. Its interpretation depends on its type:
Object[]
An array of objects is interpreted as a series of messages (one per object) arranged in a vertical stack. The interpretation is recursive -- each object in the array is interpreted according to its type.
Component
The Component is displayed in the dialog.
Icon
The Icon is wrapped in a JLabel and displayed in the dialog.
others
The object is converted to a String by calling its toString method. The result is wrapped in a JLabel and displayed.
 

HAOSK

Mitglied
Eine Alternanive wäre mit 'Weiter'-Button
das aktuelle Fenster ausblenden (windows.dispose()) und ein anderes erzeugen.

Zu diesem Zeitpunkt weist du ja was im nächsten stehen soll.

Gruß
 

ru49

Mitglied
Ich hab nochmal eine Fragen!
Ich habe mich jetzt doch dazu entschieden ein JTappedPane zu benutzen. Kann ich dort auch ein Tab verändern, wenn der Benutzer ein anderes ausgewählt hat?
Wenn das nicht geht, werde ich wieder auf das CardLayout zurückgreifen. Das hat übrigens funktioniert.
Danke schon mal für die Hilfe

Gruß Ru49
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben