使用FocusEvent焦点事件和KeyEvent键盘事件,输入序列号,判断序列号是否正确(自行设定正确的序列号),通过对话框输出判断结果。
时间: 2023-06-14 17:04:22 浏览: 66
好的,以下是一个简单的实现示例:
```java
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class SerialNumberValidator implements FocusListener, KeyListener {
private final String validSerialNumber = "ABCD-1234-EFGH-5678"; // 正确的序列号
private JTextField textField; // 输入框
public SerialNumberValidator(JTextField textField) {
this.textField = textField;
this.textField.addFocusListener(this);
this.textField.addKeyListener(this);
}
@Override
public void focusGained(FocusEvent e) {
// 当输入框获得焦点时不做任何处理
}
@Override
public void focusLost(FocusEvent e) {
validate();
}
@Override
public void keyPressed(KeyEvent e) {
// 当按下键盘上的任意键时不做任何处理
}
@Override
public void keyReleased(KeyEvent e) {
validate();
}
@Override
public void keyTyped(KeyEvent e) {
// 当输入字符时不做任何处理
}
private void validate() {
String input = textField.getText();
if (input.equals(validSerialNumber)) {
JOptionPane.showMessageDialog(null, "序列号正确!", "提示", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "序列号错误,请重新输入!", "提示", JOptionPane.ERROR_MESSAGE);
textField.setText("");
textField.requestFocus();
}
}
}
```
使用方法:创建一个文本框对象,并将其传递给 `SerialNumberValidator` 的构造方法即可。例如:
```java
JTextField textField = new JTextField();
SerialNumberValidator validator = new SerialNumberValidator(textField);
```
这样,当用户在文本框中输入序列号或者将焦点从文本框移开时,程序会自动判断序列号是否正确,并通过对话框输出判断结果。