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("序列号");
    }
}

在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/yogur_father/article/details/109008725
今日推荐