mirinda95925 2010-08-05 16:06
浏览 1207
已采纳

java swing 判断焦点的问题

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

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

求解答

  • 写回答

3条回答 默认 最新

  • nxyc_twz 2010-08-06 11:40
    关注

    研究一早上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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题