java笔记 焦点事件 和 键盘事件

一.焦点事件

焦点就是光标,一般用在文本框中
接口 FocusListener
函数 focusGained(FocusEvent)从无到获得焦点
focusLost (FocusEvent)从有到失去焦点

一个组件可以调用boolean requestFocusInWindow()获得焦点
比如 text[0].requestFocusInWindow(); // 初始状态先让第一个文本框获得焦点

当然一个组件也可以转移焦点 t.transferFocus()
函数t.getCaretPosition()可以获得焦点位置,从0开始计数( t 为文本框组件)

二.键盘事件

接口Keylistener
函数 keyPressed(KeyEvent)
keyTyped(KeyEvent)按下释放,
keyreleased(KeyEvent)

在使用KeyEvent类的时候
利用int getKeyCode()判断哪个键被按下,返回码值,具体见后表
也可以利用 getKeyChar() 判断,返回char,也就是键盘的字符

只有键盘输入的是英文环境下的,程序才能进行判断

//Inner class 事件处理例一
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Win extends JFrame
{
    JTextField text[] = new JTextField[3] ; // 创建三个文本框
    Police police;                          // 监视器
    JButton b;

    Win(String s)
    {
        setTitle(s);
        setBounds(10, 10, 460, 360);
        setLayout(new FlowLayout());
        police = new Police();
        for(int i = 0; i < 3; i++)
        {
            text[i] = new JTextField(7);
            text[i].addKeyListener(police);  // 给文本框添加键盘监听器
            text[i].addFocusListener(police);  // 给文本框添加焦点监听器
            add(text[i]);
        }
        b = new JButton("确定");
        add(b);

        text[0].requestFocusInWindow();  // 初始状态先让第一个文本框获得焦点
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    // 实现键盘监听器 和 焦点监听器接口
    public class Police implements KeyListener, FocusListener
    {
        // 实现键盘监听器接口
        // 键盘按下函数
        public void keyPressed(KeyEvent e)
        {
            JTextField t = (JTextField)e.getSource();
            if(t.getCaretPosition() >= 5)    // 如果焦点大于等于6(从0开始)的时候,每按一下键盘都进行一次判断
            {
                t.transferFocus();           // 焦点转移到下一个组件
            }


        }
        // 键盘按下释放函数
        public void keyTyped(KeyEvent e){}
        // 键盘释放函数
        public void keyReleased(KeyEvent e){}

        // 实现焦点监听器接口
        // 实现获得焦点函数
        public void focusGained(FocusEvent e)
        {
            JTextField text = (JTextField)e.getSource();
            text.setText(null);   // 每一个组件获得焦点后,将内容设置为空
        }
        // 实现失去焦点函数
        public void focusLost(FocusEvent e){}   // 这个 Lost 没有 ed
    }
}

//主类
public class test
{
    public static void main(String args[])
    {
        Win win = new Win("序列号");
    }
}

在这里插入图片描述

----------------------------------------------------------------------------------------------------------------------在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值