您的位置:首页 > 编程语言 > Java开发

Java键盘事件监听(2)修改:使用监听键盘事件,而不是改写JTextField

2012-07-12 05:18 901 查看


package com.han;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
* 键盘事件监听(2)修改:使用监听键盘事件,而不是改写JTextField
* @author HAN
*
*/
public class KeyEvent_2_Modified extends JFrame {

/**
*
*/
private static final long serialVersionUID = -3184139070064852786L;

public KeyEvent_2_Modified() {
// TODO Auto-generated constructor stub
final Container container = getContentPane();
container.setLayout(new FlowLayout());
JLabel label = new JLabel("实现只允许输入数字的文本框:");
final JTextField textField = new JTextField(10);
container.add(label);
container.add(textField);

textField.addKeyListener(new KeyAdapter() {

@Override
public void keyPressed(KeyEvent e) { // keyPressed 与 keyReleased是有时间差的!!
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
char[] text = textField.getText().toCharArray();
for (char ch : text) {
if (!Character.isDigit(ch)) {
//							textField.removeKeyListener(this);
JOptionPane.showMessageDialog(container,
"Your input contains non-digit characters !",
"Warning", JOptionPane.WARNING_MESSAGE);
textField.setText("");
//							textField.addKeyListener(this);
return;
}
}
}
}
});
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
KeyEvent_2_Modified frame = new KeyEvent_2_Modified();
frame.setTitle("实现只允许输入数字的文本框(2)");
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐