📄 keyexam.java
字号:
package ch8;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyExam extends JFrame implements ActionListener,KeyListener
{
JTextField no = new JTextField(10);
JTextField result = new JTextField(10);
JPanel jp=new JPanel(); //创建窗格容器摆放相关组件
JTextArea jt=new JTextArea(5,20); //创建多行文本框对象显示学生的相关信息
JScrollPane js=new JScrollPane(jt); //在滚动容器中显示学生信息
JButton next=new JButton("下一个");
JButton exit=new JButton("退出");
public KeyExam()
{
setTitle("成绩录入 KeyEvent 事件演示");
Container rootPane=this.getContentPane(); //获得摆放组件的窗口容器
rootPane.setLayout(new FlowLayout()); //在窗口上以流布局摆放组件
jp.setLayout(new GridLayout(0,2)); //在窗格容器上以网格布局摆放组件
jp.add(new JLabel("学号")); //将组件摆放到窗格上
jp.add(no); //......
jp.add(new JLabel("成绩")); //......
jp.add(result); //......
jp.add(exit); //......
jp.add(next); //......
rootPane.add(jp); //将窗格对象jp添加到窗口上
rootPane.add(js); //将滚动窗格对象js添加到窗口上
jt.setEditable(false); //设置多行文本框是不可编辑的
no.addKeyListener(this); //注册no的按键监听对象
result.addKeyListener(this); //注册result的按键监听对象
exit.addActionListener(this); //注册exit按钮的监听对象
next.addActionListener(this); //注册next按钮的监听对象
setSize(250,200); //设置窗口的大小
setVisible(true);
setDefaultCloseOperation(3);
}
/********主方法*********/
public static void main( String[] args ) //程序的入口方法
{
new KeyExam();
}
/*********ActionListener接口方法*************/
public void actionPerformed(ActionEvent e) //实现单击按钮事件
{
Object obj=e.getSource(); //获取事件源
if(obj==next) //输入下一个
{
jt.append(no.getText()+" "+result.getText()+"\n");
no.setText(""); //设置学号框内容为空
result.setText("");//设置成绩框内容为空
no.requestFocus(); //定位输入位置
}
else //退出
{
System.exit(0);
}
}
/******实现了LeyListener接口方法********/
public void keyPressed(KeyEvent e) //键盘按下事件方法
{
Object obj=e.getSource(); //获得事件源
if(e.getKeyCode()==10) //是回车键
{
if(obj==no) result.requestFocus(); //定位到result输入成绩
else if(obj==result) //一个学生的信息输入完成
{
jt.append(no.getText()+" "+result.getText()+"\n");
no.setText(""); //设置学号框内容为空
result.setText(""); //设置成绩框内容为空
no.requestFocus(); //定位到no,开始下一个学生信息的输入
}
}
}
/*----键盘键入事件-----*/
public void keyTyped(KeyEvent e)
{
Object obj=e.getSource(); //获得事件源
char c=e.getKeyChar(); //获得键入的字符
if(c>=':'||c<='/'&&c>=' ') //非法字符拒绝进入文本框
{
Toolkit.getDefaultToolkit().beep(); //发出声响
if(obj==no) no.setEditable(false); //不接收学号中输入的非法字符
if(obj==result) result.setEditable(false);//不接收成绩中输入的非法字符
}
}
/*----按键释放事件----*/
public void keyReleased(KeyEvent e)
{
no.setEditable(true); //学号框中接受输入
result.setEditable(true);//成绩框中接受输入
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -