# Schließen abfangen?



## Gast (24. Jul 2008)

Hallo,
die Fragen hört ihr bestimmt nicht zum ersten mal, aber wie kann ich bei einer RCP-Anwendung:

-    das schließen durch das "X" abfangen und wo mache ich das?

-    das schließen durch Menupünkt Exit, welches mit "ActionFactory.QUIT.create(window);" erstellt wurde.

-    programmatisch die komplette Oberfläche der Anwendung disablen

Vielen Dank schonmal für euere Antworten.


----------



## L-ectron-X (24. Jul 2008)

Ich hoffe, ich habe dich jetzt richtig verstanden:

In der windowClosing()-Methode.


----------



## Gast (25. Jul 2008)

Entschuldige die komische Frage, aber wo finde ich die? 
Müsste ja wahrscheinlich irgendwo in den Workbench klassen sein, oder?


----------



## L-ectron-X (25. Jul 2008)

Ich bin mir immer noch nicht sicher, ob wir aneinander vorbei reden, ich verstehe nur die Hälfte von dem, was du schreibst...
Aber mal ein Beispiel, von dem, was ich meine:

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class WindowClosingDemo {

   public WindowClosingDemo() {
      final JFrame frame = new JFrame("WindowClosingDemo");
      frame.setSize(800, 600);
      frame.setLocationRelativeTo(null);
      frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
      frame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            exit(frame);
         }
      });
      
      JMenuBar menuBar = new JMenuBar();
      JMenu fileMenu = new JMenu("Datei");
      
      JMenuItem exitItem = new JMenuItem("Beenden");
      exitItem.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            exit(frame);
         }
      });
      fileMenu.add(exitItem);
      
      menuBar.add(fileMenu);
      
      frame.setJMenuBar(menuBar);
      
      frame.setVisible(true);     
   }
   
   private void exit(JFrame frame) {
      int answer = JOptionPane.showConfirmDialog(frame,
            "Möchten Sie das Programm wirklich beenden?",
            "Beenden bestätigen",
            JOptionPane.YES_NO_OPTION,
            JOptionPane.QUESTION_MESSAGE);
            
      switch(answer) {
         case JOptionPane.YES_OPTION:
         frame.dispose();
      }
   }
   
   public static void main(String[] args) {
      new WindowClosingDemo();
   }
}
```


----------



## Gast (25. Jul 2008)

Ja doch wir reden an einander vorbeit. Du bist bei swing.
Ich bin bei einer RCP Anwendung in SWT.


----------



## Wildcard (25. Jul 2008)

Schau dir mal WorkbenchAdvisor an


----------



## Gast (25. Jul 2008)

Danke schön.

Man muss im ApplicationWorkbenchAdvisor die preShutdown() Methode überschreiben.

Danke nochmal.


----------

