Nächste GUI in einer anderen Klasse aufrufen

Diverson

Mitglied
Hallo Leute,

ich habe folgendes problem:

Ich habe ein Fenster mit Swing programmiert. Eine Klasse ConfigutationWindow und eine Klasse SearchWindow. Nachdem ich in dem einen fenster den OK Button gedrückt habe wollte ich, dass sich das nächste Fenster öffnet und sich das alte Fenster schliesst. Kann mir bitte einer sagen, wie ich die nächste GUI aufrufe? Einen ActionListener hab ich bereits, müsste nur die andere Klasse aufrufen... Nur wie? :)

Danke,
Basti
 
Zuletzt bearbeitet:

anti-held

Bekanntes Mitglied
Du musst auf das nächste Objekt
Code:
setVisible(true)
sichtbar machen und den anderen Frame mit
Code:
dispose()
oder
Code:
setVisible(false)
beenden oder unsichtbar machen.
 

VfL_Freak

Top Contributor
Moin,

Ich habe ein Fenster mit Swing programmiert. Eine Klasse ConfigutationWindow und eine Klasse SearchWindow. Nachdem ich in dem einen fenster den OK Button gedrückt habe wollte ich, dass sich das nächste Fenster öffnet und sich das alte Fenster schliesst. Kann mir bitte einer sagen, wie ich die nächste GUI aufrufe? Einen ActionListener hab ich bereits, müsste nur die andere Klasse aufrufen... Nur wie? :)
So ganz verstehe ich Deine Frage nicht ....

im Listener des OK-Button:
Java:
aktuellesFenster.dispose();  // oder auch ".setVisible( false);

...

neuesFenster.setVisible( true );

Poste mal Deinen Code!

Gruß
Klaus
 

Diverson

Mitglied
Klasse ConfigurationWindow:

[JAVA=42]package exercises.project;

import java.util.Locale;
import java.util.ResourceBundle;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class ConfigurationWindow extends JFrame {

private static final String PATH = "path";
private static final String OPTION = "option";
private static final String LANGUAGE = "language";
private static final String RDB_GET_USERDATA = "rdbGetUserdata";
private static final String RDB_SEARCH_USER = "rdbSearchUser";
private static final String LIST_SEARCH = "listSearch";
private ResourceBundle bundle;
private JPanel panel;
private JTextField filePath = new JTextField("");
private JButton Ok;
private JButton Cancel;
private JButton File;

public ConfigurationWindow() {
super("Choose your activity");
setSize(360, 250);
setLocation(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Locale.setDefault(Locale.ENGLISH);

bundle = ResourceBundle.getBundle(getClass().getPackage().getName() + ".resources");

panel = new JPanel();
panel.setLayout(null);
getContentPane().add(panel);

JLabel options = new JLabel(bundle.getString(OPTION));
panel.add(options);
options.setBounds(10, 10, 200, 20);

//JComboBox mit Sprachen
JLabel languageLabel = new JLabel(bundle.getString(LANGUAGE));
panel.add(languageLabel);
languageLabel.setBounds(20, 30, 200, 20);

String LanguageList[] = { "English", "German"};
JComboBox language = new JComboBox(LanguageList);
language.setBounds(20, 50, 100, 25);

panel.add(language);

//JLabel
JLabel listorSearch = new JLabel(bundle.getString(LIST_SEARCH));
panel.add(listorSearch);
listorSearch.setBounds(20, 80, 200, 20);

//RadioButtons & ButtonGroup
JRadioButton rb1 = new JRadioButton(bundle.getString(RDB_GET_USERDATA));
JRadioButton rb2 = new JRadioButton(bundle.getString(RDB_SEARCH_USER));
rb1.setSelected(true);
ButtonGroup btngrpoup = new ButtonGroup();
btngrpoup.add(rb1);
btngrpoup.add(rb2);

//Zuweisung der Buttons
panel.add(rb1);
rb1.setBounds(20, 100, 100, 15);
panel.add(rb2);
rb2.setBounds(150, 100, 100, 15);

JLabel pathLabel = new JLabel(bundle.getString(PATH));
panel.add(pathLabel);
pathLabel.setBounds(20, 130, 200, 15);

filePath.setEditable(false);
panel.add(filePath);
filePath.setBounds(20, 150, 200, 20);

//JButton
Ok = new JButton("OK");
Cancel = new JButton("Cancel");
File = new JButton("Durchsuchen");

panel.add(Ok);
Ok.setBounds(215, 15, 75, 30);
panel.add(Cancel);
Cancel.setBounds(215, 50, 75, 30);
panel.add(File);
File.setBounds(222, 150, 115, 19);

Ok.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
check();
}
});
Cancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
File.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
FileChoose();
}
});
setVisible(true);
}

public static void main(String[] args) {
ConfigurationWindow cw = new ConfigurationWindow();
cw.setVisible(true);
}

public void FileChoose() {
JFileChooser chooser = new JFileChooser();
chooser.showDialog(null, "Open");
String select = chooser.getSelectedFile().toString();
filePath.setText(select);
}

public void check() {
if (filePath.equals("")) {
JOptionPane.showMessageDialog(null, "Path can't be empty!", "Error",
JOptionPane.ERROR_MESSAGE);
}
}
}[/code]
 

Diverson

Mitglied
Klasse SearchWindow:

[JAVA=42]package exercises.project;

import java.util.Locale;
import java.util.ResourceBundle;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class SearchWindow extends JFrame {

private static final String SEARCH_MAIN = "searchMain";
private JPanel panel;
private ResourceBundle bundle;

public SearchWindow() {
super("Search");
setSize(250, 250);
setLocation(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Locale.setDefault(Locale.ENGLISH);

bundle = ResourceBundle.getBundle(getClass().getPackage().getName() + ".resources");

panel = new JPanel();
panel.setLayout(null);
getContentPane().add(panel);

JLabel searchHead = new JLabel(bundle.getString(SEARCH_MAIN));
panel.add(searchHead);
searchHead.setBounds(10, 10, 200, 20);

JLabel searchField = new JLabel(bundle.getString("searchField"));
panel.add(searchField);
searchField.setBounds(20, 30, 80, 20);

JTextField search = new JTextField();
panel.add(search);
search.setBounds(20, 55, 150, 20);
}

public static void main(String[] args) {
SearchWindow sw = new SearchWindow();
sw.setVisible(true);
}
}
[/code]

Jetzt will ich die Klasse SearchWindow im ActionListener vom OK Button im ConfigurationWindow aufrufen, sodass sich das SearchWindow öffnet... Da steh ich glaub gerade total auf dem Schlauch...
 
Zuletzt bearbeitet:

Timothy Truckle

Top Contributor
Ich habe ein Fenster mit Swing programmiert. Eine Klasse ConfigutationWindow und eine Klasse SearchWindow. Nachdem ich in dem einen fenster den OK Button gedrückt habe wollte ich, dass sich das nächste Fenster öffnet und sich das alte Fenster schliesst. Kann mir bitte einer sagen, wie ich die nächste GUI aufrufe? Einen ActionListener hab ich bereits, müsste nur die andere Klasse aufrufen... Nur wie? :)
Die Frage ist: willst Du wirklich den ganzen Farme schließen oder "nur" einen neuen Inhalt anzeigen? Wenn Du einen neuen Frame aufmachst sind die Einstellungen, die der Anwender am (alten) Frame gemacht hat verloren. Würdes Du ein Programm benutzen wollen, das ständig zu seiner Standardgröße zurückkehrt?

Wenn Du Dir mal typische Anwendungen ansiehts wirst Du feststellen, dass es in deren Frame einige unveränderliche Komponenten (z.B. das Hauptmenü und einige grundlegende Navigations-Butons, ein Statusbar) gibt und einen Bereich, in dem sich die Inhalte ändern.

In Java erreicht man das üblicher Weise, in dem man dem Frame ein [JAPI]BorderLayout[/JAPI] gibt, die Komponenten, die immer Sichtbar sein sollen in die Ränder des BorderLayout legt und die Komponente in der Mitte austauscht.
Ob dieses Austauschen über
Code:
removeLayoutComponent()
/
Code:
add()
, ein [JAPI]CardLayout[/JAPI], ein [JAPI]TabbedPane[/JAPI] oder eine andere Technik erreicht wird ist dann nur noch Detail.

Für Dich heist das:
Lass Deine Klassen nicht von JFrame erben, benutze einen!
Überlege gut, ob sie überhaupt von einer GUI-Klasse erben müssen (also deren Verhalten ändern) oder ob Du sie einfach nur benutzen/konfigurieren kannst.
Lass Deine GUI-bezogenen Klassen nicht direkt miteinander reden sondern nutze ein Modell, das die Daten deiner Anwendung ganz ohne Bezug zur GUI rein "fachlich" organisiert.
(das Stichwort für's Weiterlesen ist MVC-Pattern.)
Und das sollte man auch gelesen haben: Trail: Creating a GUI With JFC/Swing (The Java™ Tutorials)

bye
TT
 

Diverson

Mitglied
Also das heisst, wenn ich das eine Frame mit System.exit(0) schliesse sind meine Konfigurationen im nächsten Frame verloren? (Die ich eigentlich als Zustände über alle Frames bräuchte)

Lass Deine Klassen nicht von JFrame erben, benutze einen!
Das verstehe ich nicht genau. ???:L
 
Zuletzt bearbeitet:

MrClave

Bekanntes Mitglied
Ein System.exit(0) beendet die VM, nicht den Frame. (Ok, so gesehen auch den Frame)

Statt
Code:
extends JFrame
, solltest du schreiben:

Java:
private JFrame frame;

public "Klassenname"() {
frame = new JFrame();
frame.setSize( 800, 600 );
// usw.
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
eskimo328 JTable nächste Zelle nach Eingabe einer Ziffer AWT, Swing, JavaFX & SWT 5
T Tetris - nächste Form anzeigen AWT, Swing, JavaFX & SWT 6
S Swing JTabbedPane: Nur nach ButtonClick und nicht nach Click auf Tab ins nächste Tab wechseln AWT, Swing, JavaFX & SWT 2
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
C JavaFX Tief setzen in der Überschrift einer Tabellenspalte AWT, Swing, JavaFX & SWT 3
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
X Zeilen aus einer Textdatei einzelnd als String abrufen AWT, Swing, JavaFX & SWT 8
R JavaFX Wert einer ChoiceBox bekommen ohne Lambdas AWT, Swing, JavaFX & SWT 11
W Swing bzgl. Tableskalierung/Darstellung einer Matrix AWT, Swing, JavaFX & SWT 8
F JavaFX ChoiceBox Name als Auswahl bei einer Objektliste AWT, Swing, JavaFX & SWT 4
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben