查看窗口是否失去焦点

时间:2016-09-11 19:44:59

标签: java swing jframe focus

我有一个未经装饰的JFrame我自己的标题'在顶部。除了告诉窗口是否没有焦点外,它工作正常。

我尝试过像

这样的事情
if(!frame.hasFocus()
    //Do stuff here

但是当我在窗口中有其他组件时,这显然不会起作用,例如JTextField。我还没有办法做到这一点,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

以下是示例代码,您可以通过该示例代码来实现:

import java.awt.event.FocusListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class SwingTest {

public static void main(String args[])
{ 
    swing();
}
public static void swing()
{
    JFrame g= new JFrame("First");
    g.setVisible(true);
    g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    g.setSize(300, 300);
    g.setLayout(null);
    JLabel l=new JLabel("Times Windows Lost Focus : 0");
    l.setBounds(20,10, 200, 60);
    g.add(l);

    g.addWindowFocusListener( new WindowFocusListener() {
        int c=0;
        @Override
        public void windowLostFocus(WindowEvent e) {
            c++;


        }

        @Override
        public void windowGainedFocus(WindowEvent e) {
            l.setText("Times Windows Lost Focus :"+c);
            //System.out.println(c);
            // TODO Auto-generated method stub

        }
    });;
}
}