| 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());
 }
 }
 
 
 |