2016-10-14 5 views
1

So habe ich den folgenden Code, um eine schnelle Popup-Box zu machen, die meinen Benutzer informiert, dass das Programm beendet ist. Ich möchte einige zusätzliche Ereignisse behandeln, sobald der Benutzer Ok klickt, insbesondere möchte ich einige Treiber und eine SQL-Verbindung schließen. Wie kann ich das erreichen?Hinzufügen von Ereignisbehandlung zu Jframe-Dialog

Hier ist der Code, dass die JFrame

javax.swing.JFrame optionFrame = new javax.swing.JFrame(); 
    JOptionPane.showMessageDialog(optionFrame, "Tests Complete. Screenshots and Results can be found at C://Features"); 
    optionFrame.toFront(); 
    optionFrame.repaint(); 
    this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); 

Antwort

0

einfach es richtig macht, nachdem Sie den Dialog zeigen, aber vor this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));

auch den Teil entfernen:

optionFrame.toFront(); 
optionFrame.repaint(); 

diese Linie (das Meldungsdialog-Popup):

JOptionPane.showMessageDialog(optionFrame, "Tests Complete. Screenshots and Results can be found at C://Features"); 

wird den Thread so lange aufrufen, bis der Benutzer auf OK klickt oder auf das Popup schließt, keine Notwendigkeit, etwas extra zu tun, irgendein Code nach dieser Zeile wird ausgeführt, nachdem das Popup verschwindet.

auf Ihrem Beispiel basiert es sein könnte:

... 
JOptionPane.showMessageDialog(optionFrame, "Tests Complete. Screenshots and Results can be found at C://Features"); 
// do your clean-up work here (probably invoke some clean up service method) 
this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); 
+0

kann Ihnen ein Beispiel, wie das wäre getan werden? Brauche ich eine separate Methode, um das zu tun? Normalerweise werden Ereignisse in separaten Methoden behandelt, oder? – Jrawr