一.焦点事件
焦点就是光标,一般用在文本框中
接口 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("序列号");
}
}
----------------------------------------------------------------------------------------------------------------------