窗口,控件:捕捉焦点

来源:互联网 发布:电脑看书软件阅读器 编辑:程序博客网 时间:2024/05/01 22:00

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("窗口失去焦点"); }}

0 0