Java Swing / WinBuilder: Wie kann ich die Größe meines Fensters festlegen und via Button ein Fenster schließen?
Hallo,
ich bin 15 Jahre alt und Schüler auf einem Gymnasium in RLP.
Zu meinen Problemen:
1) Ich arbeite zurzeit an einem grafischen Text-Adventure. Jedoch habe ich ein Problem damit, dass ich bei jedem Ausführen erst einmal mein Fenster größer ziehen muss. Hat jemand eine Idee, wie ich die Größe ein für alle mal festlegen kann?
2) Wie gesagt, arbeite ich an einem Text-Adventure. In diesem möchte ich dem Spieler die Möglichkeit geben, mithilfe zwei verschiedener Knöpfe eine Auswahl zu treffen.
Alles schön und gut. Beim Betätigen des Knopfes auf Folie 1 öffnet sich Folie 2. Jedoch bleibt Folie 1 auch noch auf. Wie kann ich mithilfe eines Knopfes eine Folie schließen und die andere öffnen?
JButton natürlichB = new JButton("Natürlich!");
natürlichB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Adventure2 nw = new Adventure2();
nw.NewScreen();
}
});
3 Antworten
1) Entweder du definierst eine feste Größe mit setSize oder du lässt Swing mit pack selbst berechnen, wie viel Platz die Komponenten überhaupt benötigen.
2) Ist es überhaupt notwendig, jedesmal ein neues Fenster zu öffnen? Es sollte doch ausreichen, die Oberfläche des aktuellen Fensters anzupassen.
Ein CardLayout kann, sollte sich die Anzahl und Anordnung der Komponenten jeweils ändern, hilfreich sein. Dabei würde ich allerdings die verschiedenen Seitentypen zu Templates zusammenfassen und bei einem Wechsel zu Seite XY nur die Texte neu setzen.
Beachte, dass der Swing-relevante Part innerhalb des Event Dispatch Threads ausgeführt werden sollte.
1.)
Da ich nicht weiß wie dein Code für das Fenster aussieht kann ich jetzt nur vermuten was helfen könnte. Ich nehme an du verwendest ein JFrame? Hast du es schon einmal mit der Funktion 'setSize' von der JFrame Klasse versucht?
2.)
Wenn du ein JFrame schließen möchtest reicht das aus:
frame.dispatchEvent(new WindowEvent(frame,WindowEvent.WINDOW_CLOSING));
Wobei du darauf achten musst das du möglicherweise den Bezeichner 'frame' anpassen musst auf deinen Code.
Du kannst die Größe mit frame.setSize(Breite, Höhe) das Fenster größer machen.
Wie hast du denn die "Folien" aufgebaut? Wenn sich ein neues Frame aufbaut kannst du einfach frame.dispose() (mit Java swing) machen.