java swing 判断焦点的问题

[code="java"]
cv.downPage.requestFocus();//设置焦点
System.out.println("是否获得焦点:"+cv.downPage.isFocusOwner());
[/code]

这个按钮是在一个frame中的。
图上已经显示这个按钮有焦点了,但是我调用isFocusOwner()方法却显示false(焦点不在这个按钮上)

求解答

研究一早上jdk源码,终于算是帮你解决了!
这是我的测试代码:
[code="java"]
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class TestFocus {
public static void main(String [] argv){
final JFrame frame = new JFrame(){
public boolean isFocused(){//重载JFrame
return false;
}
};
frame.setSize(600, 600);
final JButton btn1 = new JButton("a");
final JButton btn2 = new JButton("b");

    btn1.addActionListener(new ActionListener(){
        //点击按钮a后,自动将焦点转移到按钮b
        public void actionPerformed(ActionEvent arg0) {
            Component c = frame.getMostRecentFocusOwner();
            System.out.println("点击前-->button b 是否获得焦点:"+btn2.equals(c));  
            btn2.requestFocus();
            c = frame.getMostRecentFocusOwner();
            System.out.println("点击后-->button b 是否获得焦点:"+btn2.equals(c));  
        }

    });
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add(btn1, BorderLayout.NORTH);
    frame.getContentPane().add(btn2, BorderLayout.SOUTH);
    frame.setVisible(true);
}

}

[/code]

运行结果:
[code="java"]
点击前-->button b 是否获得焦点:false
点击后-->button b 是否获得焦点:true
[/code]

requestFocus()这个方法经常不管用的
程序不在前台时,想获得焦点很可能就不行
如果你在界面范围内操作,比如你点了个按钮,执行这个代码,一般没问题

如果已经获得焦点了的话,有可能是延迟
在System.out.println("是否获得焦点:"+cv.downPage.isFocusOwner());
前面加一句Thread.sleep(100);
让程序暂停100或200毫秒试试