ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
1235
1235
EMPFEHLEN
-
Hallo,
ich habe gerade ein kleijnes Projekt für die Uni zu machen.
Als Oberfläche verwende ich Swing.
Situation:
- Ich habe 2 Fenster
- Das erste Fenster wird mittels main() gesetVisibled()
- Das 2 Fenster ist quasi ein Unterfenster. Gestartet mittels Button des ersten Fenters.
- Das 2. Fenster enthält wieder ein Button ("Abbrechen")
- Wenn ich auf das Abbrechen Button klicke möchte ich, dass das 2. Fenster geschlossen wird, und das erste Fenster wieder aktiviert wird.
Prämissen:
- Wenn das 2. Fenster geöffnet ist soll es nicht möglich sein das erste Fenster anzuwählen, bzw irgendetwas damit zu machen. Gesehen werden kann es natürlich. Ich denke ihr wisst, was ich meine.
Problem:
- Ich habe die Fuktion thisFrame (ist ein JFrame, welches auf this des Fensters zeigt).dispose(); benutzt um das 2. Fenster zu schließen. Das geht aber nicht!
Ich habe in der Klasse des erstens Fensters den ActionListener geschrieben, wenn das 2. Fenster geschlossen wird. Ach seht einfach selbst!
Source:
Fenster 1:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
buNew.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setEnabled(false); NeuerKundeGUI neuerkundeGUI = new NeuerKundeGUI(Kunden); neuerkundeGUI.setVisible(true); neuerkundeGUI.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { setEnabled(true); setVisible(true); } }); } });
Fenster 2:
Code :1 2 3 4 5
Abbrechen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { thisFrame.dispose(); } });
Die Methode windowClosing wird nicht aufgerufen, wenn dispose auf dem 2. Fenster ausgeführt wird.
Wo liegt mein Fehler? Wie könnte man das oben beschriebene noch realisieren!
Grüße
dynamicx
-
23.06.09 12:19 #2
Deine 2. Klasse muss von der Klasse JDialog (nicht JFrame) abgeleitet werden. Dann hast du eine Fuktion setModal(boolean). Bei true, wird das erreicht was du möchtest, dass das andere Fenster nicht benutzt werden kann.
Warum scheibst du bei ActionListener vom Button Abbrechen nicht einfach nur dispose()?Geändert von HonniCilest (23.06.09 um 12:31 Uhr)
-
23.06.09 12:26 #3
Wie wäre es einfach so?
Code java: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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
package core; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; public class WindowOne extends JFrame { private static final long serialVersionUID = 1L; private static JDialog windowTwo; public WindowOne() { super("Window One"); setSize(300, 300); setLocationRelativeTo(null); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JFrame i = this; JButton button = new JButton(); button.setText("Go"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setEnabled(false); if(windowTwo == null) windowTwo = new WindowTwo(i); windowTwo.setVisible(true); } }); add(button); setVisible(true); } public static void main(String[] args) { new WindowOne(); } } /////////////////////////////////////////////////////////////////////////// package core; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; public class WindowTwo extends JDialog { private static final long serialVersionUID = 1L; public WindowTwo(final JFrame i) { super(); setSize(100, 100); setResizable(false); setTitle("Window Two"); setLocationRelativeTo(i); setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent arg0) { i.setEnabled(true); setVisible(false); } }); JButton button = new JButton("Abort"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { WindowListener[] listeners = getWindowListeners(); for(WindowListener listener:listeners) listener.windowClosing(null); } }); add(button); } }
-
Danke Jungs. Habe die Lösung von Kai angewendet und es hat super funktioniert.
Trotzdem Danke auch an HnniCilest
Gruß
dynamicx
Ähnliche Themen
-
Swing Fenster nicht mehrmals öffnen
Von MikaM im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 5Letzter Beitrag: 08.07.09, 10:25 -
Fenster schließen ohne Applikation zu beenden.
Von J1M1 im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 11.11.07, 13:21 -
Programm will nicht beenden
Von BlinkSkater im Forum C/C++Antworten: 34Letzter Beitrag: 20.04.05, 17:14 -
Programm Beenden und alles Schließen
Von Serethos im Forum JavaAntworten: 14Letzter Beitrag: 25.02.05, 10:52 -
Fenster schließen Button
Von CemO im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 26.01.05, 11:13





Zitieren
Login




