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);
}
}
Java键盘事件监听(2)修改:使用监听键盘事件,而不是改写JTextField
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章