public class TestFocus extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel panel = new JPanel();
private JTextField f1 = new JTextField("文本框1");
private JTextField f2 = new JTextField("文本框2");
private JLabel label = new JLabel("风向标");
private Color c = null; //初始时JPanel的背景色
private boolean state = false; //文本框2的焦点状态,初始为false,表示没有获得焦点
public TestFocus() {
super("Demo");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(200, 200, 400, 400);
Container pane = this.getContentPane();
pane.add(panel);
c = panel.getBackground();
panel.add(f1);
panel.add(f2);
panel.add(label);
f2.addFocusListener(new FocusAdapter(){
@Override
public void focusGained(FocusEvent e) {
System.out.println("按钮2获得焦点");
state = true;
}
@Override
public void focusLost(FocusEvent e) {
System.out.println("按钮2失去焦点");
state = false;
}
});
Thread t = new Thread(new MyThread());
t.start();
}
//用于监测文本框2焦点状态变化的线程
class MyThread implements Runnable {