package FocusListener;
import java.awt.BorderLayout;
import java.awt.TextArea;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
/**
* 实现面板获得焦点的反应
*
* @author Eiffel
*
*/
public class Test1 extends JFrame {
// 面板
Test1Panel panel = null;
// 构造方法
public Test1() {
// 初始化
panel = new Test1Panel();
// 添加
this.add(panel);
this.addWindowFocusListener(panel);
// 设置窗口属性
// this.setBounds(500, 250, 400, 300);
this.setTitle("面板获得焦点测试");
this.pack();
this.setLocation(500, 250);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String args[]) {
new Test1();
}
}
class Test1Panel extends JPanel implements FocusListener, WindowFocusListener {
// 成员属性
TextArea textArea = null;
JScrollPane jsp = null;
JButton jbt = null;
// 构造方法
public Test1Panel() {
// 初始化属性
textArea = new TextArea();
textArea.addFocusListener(this);
jsp = new JScrollPane(textArea);
jsp.addFocusListener(this);
jbt = new JButton("一个按钮");
jbt.addFocusListener(this);
// 添加
this.add(jsp, BorderLayout.CENTER);
this.add(jbt, BorderLayout.EAST);
}
// 组件获得键盘焦点时调用。
@Override
public void focusGained(FocusEvent e) {
if (e.getSource() == textArea) {
System.out.println("进入输入区域");
} else if (e.getSource() == jbt) {
System.out.println("点击按钮");
}
}
// 组件失去键盘焦点时调用。
@Override
public void focusLost(FocusEvent e) {
if (e.getSource() == textArea) {
System.out.println("离开输入区域");
} else if (e.getSource() == jbt) {
System.out.println("离开按钮");
}
}
// 窗口得到焦点
@Override
public void windowGainedFocus(WindowEvent e) {
System.out.println("窗口得到焦点");
}
// 窗口失去焦点
@Override
public void windowLostFocus(WindowEvent e) {
System.out.println("窗口失去焦点");
}
}
窗口,控件:捕捉焦点
最新推荐文章于 2023-05-27 09:51:29 发布