这是我加在JButton上的Focus事件: 
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setSize(new java.awt.Dimension(47,25));
jButton1.setLocation(new java.awt.Point(28,30));
jButton1.addFocusListener(new java.awt.event.FocusListener() {
public void focusGained(java.awt.event.FocusEvent e) {
System.out.println("focusGained()"); }
public void focusLost(java.awt.event.FocusEvent e) {
System.out.println("lost");
}
});
}
return jButton1;
}
在控制台运行Applet,点击该Btton可以输出"focusGained()"但是同理我把Focus加在JLabel上则没任何反映:
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
jPanel.setLayout(gridLayout);String s[]={"1","2","3","4","5","6","7","8","wen","wht1"};
Image imgs[]=new Image[s.length];
for(int i=0;i {
Label label=new JLabel(new MyImage("img/"+s[i]+".jpg"));
jPanel.add(label);label.addFocusListener(new java.awt.event.FocusListener(){
public void focusGained(java.awt.event.FocusEvent e) {
System.out.println("focusGained()"); 
}
public void focusLost(java.awt.event.FocusEvent e) {
System.out.println("Lost()");
}
});
}}
return jPanel;
}
运行时点击JLabel里的图片,控制台没有输出,请问高手这是什么原因??怎样在JLabel上正确添加FocusListener呢?

解决方案 »

  1.   

    //鼠标移动到JLabel上面的时候获得焦点。
    import java.awt.BorderLayout;
    import java.awt.event.FocusAdapter;
    import java.awt.event.FocusEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;public class FocusTest extends JFrame
    {
    private JTextField textField; /**
     * Launch the application
     * 
     * @param args
     */
    public static void main(String args[])
    {
    try
    {
    FocusTest frame = new FocusTest();
    frame.setVisible(true);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    } /**
     * Create the frame
     */
    public FocusTest()
    {
    super();
    setBounds(100, 100, 500, 375);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final JButton button = new JButton();
    button.addFocusListener(new FocusAdapter()
    {
    public void focusGained(FocusEvent e)
    {
    System.out.println("Button Get Focus!!");
    }
    });
    button.setText("New JButton");
    getContentPane().add(button, BorderLayout.NORTH);
    final JLabel label = new JLabel();
    label.addMouseListener(new MouseAdapter()
    {
    public void mouseEntered(MouseEvent e)
    {
    if (e.getSource() instanceof JComponent)
    {
    ((JComponent) e.getSource()).requestFocus();
    }
    }
    });
    label.addFocusListener(new FocusAdapter()
    {
    public void focusGained(FocusEvent e)
    {
    System.out.println("Label Get Focus!!");
    }
    });
    label.setText("New JLabel");
    getContentPane().add(label, BorderLayout.SOUTH);
    textField = new JTextField();
    getContentPane().add(textField, BorderLayout.CENTER);
    //
    }
    }