Hej NG!
 
 Jeg sad og rodede lidt med JInternalFrame, og stødte i den sammenhæng
 på et - for mig - uforklarligt fænomen: Der bliver kastet en focus
 gained event efterfulgt af en focus lost event, når en JInternalFrame
 bliver lukket op (de-iconified).
 
 Hvorfor bliver disse events affyret? Ydermere, hvis jeg har 2
 JInternalFrames på min JDesktopPane, bliver events'ne kun affyret,
 hvis det er den lokationsmæssige nederste JInternalFrame der lukkes
 op. Hvordan kan det være?
 
 Jeg har tilføjet et lille testprogram, som I kan prøve.
 
 
 Mvh Janus
 
 
 ------
 
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 import java.beans.PropertyVetoException;
 
 import javax.swing.JDesktopPane;
 import javax.swing.JFrame;
 import javax.swing.JInternalFrame;
 import javax.swing.JLayeredPane;
 import javax.swing.JPanel;
 import javax.swing.JTextArea;
 import javax.swing.JTextField;
 
 
 public class Frame extends JFrame implements FocusListener {
 
    private JDesktopPane desktop;
    private InternalFrame intF1, intF2;
 
    public static void main(String[] args) {
       new Frame();
    }
 
    public Frame() {
       super();
       getContentPane().setLayout(new BorderLayout());
       desktop = new JDesktopPane();
       getContentPane().add("Center", desktop);
 
       setBounds (10, 10, 800, 600);
       setResizable(false);
 
       intF1 = new InternalFrame("Internal 1");
       desktop.add(intF1, new Integer(7));
 
       intF2 = new InternalFrame("Internal 2");
       desktop.add(intF2, new Integer(7));
 
       try {
          intF1.setIcon(true);
          intF2.setIcon(true);
       }
       catch (PropertyVetoException pvExc) {
       }
 
       LayeredPanel lPanel = new LayeredPanel();
       JPanel context = lPanel.getPanel();
 
       JTextField field = new JTextField();
       field.setPreferredSize(new Dimension(150, 30));
       context.add(field);
 
       field.addFocusListener(this);
 
       desktop.add(lPanel, new Integer(5));
       lPanel.setBounds(0, 0, 800, 600);
 
       setVisible(true);
    }
 
    class LayeredPanel extends JLayeredPane {
       private JPanel panel;
 
       public LayeredPanel() {
          super();
          panel = new JPanel();
          panel.setBounds(0, 0, 800, 600);
          add(panel);
          setLayer(panel, 0);
       }
 
       public JPanel getPanel() {
          return panel;
       }
    }
 
    class InternalFrame extends JInternalFrame {
       public InternalFrame(String title) {
          super(title, true, false, true, true);
          JPanel panel = new JPanel(new BorderLayout());
          JTextArea area = new JTextArea("Text Area");
          area.setPreferredSize(new Dimension(300, 300));
 
          panel.add(area, BorderLayout.CENTER);
          getContentPane().add(panel);
 
          pack();
          setLocation(100, 100);
          show();
       }
    }
 
    public void focusGained(FocusEvent arg0) {
       System.out.println("Focus gained: " + arg0.getComponent());
    }
 
    public void focusLost(FocusEvent arg0) {
       System.out.println("Focus lost: " + arg0.getComponent());
    }
 }
  
            
             |