1.问题
实现软件序列号的输入,当文本框获得输入焦点后,用户敲击键盘将使得当前文本框触发KeyEvent事件。并且希望能够在另一个文本区域内显示文本框内的内容。
2.方法
使用KeyListener接口处理键盘事件有以下3个方法:
public void KeyPressed(KeyEvent e)
public void Typed(KeyEvent e)
public void KeyReleased(KeyEvent e)
代码清单1
package org.example;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusListener;
import java.awt.event.KeyListener;
public class PoliceListen implements ActionListener {
Win view;
public void setView(Win view) {
this.view=view;
}
public void actionPerformed(ActionEvent e) {
int n=0;
String str[]= new String[3];
for(int i=0;i<3;i++) {
str[i]=view.text[i].getText();
}
int a[]=new int[3];
int i=0;
for(String s:str) {
if(!s.isEmpty()) {
try{
n=Integer.parseInt(s);
a[i]=n;
i++;
}
catch(Exception exp) {
view.area.append("璇疯緭鍏ユ暟瀛?");
}
}
}
for(int c:a) {
view.area.append(c+"\n");
}
}
}
代码清单2
package org.example;
import javax.swing.*;
import java.awt.*;
public class Win extends JFrame {
JTextField text[]=new JTextField[3];
Police police;
PoliceListen listener;
JTextArea area;
JButton b;
Win(){
setLayout(new FlowLayout());
police=new Police();
listener=new PoliceListen();
listener.setView(this);
for(int i=0;i<3;i++){
text[i]=new JTextField(7);
text[i].addKeyListener(police);
text[i].addFocusListener(police);
text[i].addActionListener(listener);
add(text[i]);
}
b=new JButton("确定");
b.addActionListener(listener);
add(b);
area=new JTextArea(6,12);
add(new JScrollPane(area));
text[0].requestFocusInWindow();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
代码清单3
package org.example;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusListener;
import java.awt.event.KeyListener;
public class PoliceListen implements ActionListener {
Win view;
public void setView(Win view) {
this.view=view;
}
public void actionPerformed(ActionEvent e) {
int n=0;
String str[]= new String[3];
for(int i=0;i<3;i++) {
str[i]=view.text[i].getText();
}
int a[]=new int[3];
int i=0;
for(String s:str) {
if(!s.isEmpty()) {
try{
n=Integer.parseInt(s);
a[i]=n;
i++;
}
catch(Exception exp) {
view.area.append("璇疯緭鍏ユ暟瀛?");
}
}
}
for(int c:a) {
view.area.append(c+"\n");
}
}
}
代码清单4
package org.example;
public class leixiaohong {
public static void main(String args[]){
Win win=new Win();
win.setTitle("输入序列号");
win.setBounds(10,10,460,360);
}
}
3.结语
在这个代码中需要去监听文本区域,在定义Listener要注意创造一个类去重写方法,才能够实现监听,文本也要安装监听器。