[Erledigt] JInternalFrame

Wie kann ich, den CloseButton eines JInternalFrame mit eigenen Funktionen hinterlegen wie ich auch bei JFrame mit

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {}
});

mache?

ein Blick in die API Doc hätte dir http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JInternalFrame.html#addInternalFrameListener(javax.swing.event.InternalFrameListener)) gezeigt :wink:

Hier mal ein ausprogrammiertes Beispiel:

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

public class JInternalFrameTest extends JFrame {
   public JInternalFrameTest(String title) {
      super(title);
      setSize(800, 600);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

      final JInternalFrame frame = new JInternalFrame("TestFrame", true, true, true, true);
      frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
      frame.setBounds(20, 20, 400, 300);
      frame.addInternalFrameListener(new InternalFrameAdapter() {
         public void internalFrameClosing(InternalFrameEvent e) {
            int answer = JOptionPane.showConfirmDialog(frame,
               "Wirklich schließen?",
               "Schließen",
               JOptionPane.YES_NO_OPTION,
               JOptionPane.QUESTION_MESSAGE);
               
            switch(answer) {
               case JOptionPane.YES_OPTION:
                  frame.dispose();
            }
         }
      });
      frame.setVisible(true);

      JDesktopPane pane = new JDesktopPane();
      pane.add(frame);
      add(pane);
   }



   class InternalFrameAdapter implements InternalFrameListener {
      public void internalFrameActivated(InternalFrameEvent e) {}

      public void internalFrameClosing(InternalFrameEvent e) {}

      public void internalFrameIconified(InternalFrameEvent e) {}

      public void internalFrameDeiconified(InternalFrameEvent e) {}

      public void internalFrameDeactivated(InternalFrameEvent e) {}

      public void internalFrameOpened(InternalFrameEvent e) {}

      public void internalFrameClosed(InternalFrameEvent e) {}
   }



   public static void main(String[] args) {
      try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      }
      catch(Exception e) {}
      new JInternalFrameTest("JInternalFrameTest").setVisible(true);
   }
   
}```

Vielen Dank, das hat funktioniert. :slight_smile:

Eagle, und ein Blick in die Api, löst nicht immer alle Fragen.