我对一个文本框的内容进行实时监听,当文本框的输入内容超出界,提示越界,一下是代码。
jTextField1.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent evt) {
try {
int temp=Integer.valueOf(jTextField1.getText());
if(temp<100&&temp>0)//判断条件
{
jTextField1.setText(jTextField1.getText());
}
else
{
JOptionPane.showMessageDialog(null,"数据越界","提示",JOptionPane.ERROR_MESSAGE); }
catch (Exception e) { }
}
});
为什么在输入100以上的三位数时不越界,但是输入四位数是才报越界,我想是程序的控制问题,那位能帮我想一个更好的办法解决,
jTextField1.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent evt) {
try {
int temp=Integer.valueOf(jTextField1.getText());
if(temp<100&&temp>0)//判断条件
{
jTextField1.setText(jTextField1.getText());
}
else
{
JOptionPane.showMessageDialog(null,"数据越界","提示",JOptionPane.ERROR_MESSAGE); }
catch (Exception e) { }
}
});
为什么在输入100以上的三位数时不越界,但是输入四位数是才报越界,我想是程序的控制问题,那位能帮我想一个更好的办法解决,
楼主【Spirit_demon】截止到2008-06-23 17:42:12的历史汇总数据(不包括此帖):
发帖数:2 发帖分:35
结贴数:0 结贴分:0
未结数:2 未结分:35
结贴率:0.00 % 结分率:0.00 %
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
http://topic.csdn.net/u/20080623/17/2356433b-d34c-4acc-bd23-5fab18e84d44.html
public void keyPressed(KeyEvent evt) {
} public void keyReleased(KeyEvent evt) {
try {
int temp = Integer.valueOf(jTextField1.getText());
if (temp < 100 && temp > 0) {// 判断条件
jTextField1.setText(jTextField1.getText());
} else {
JOptionPane.showMessageDialog(null, "数据越界", "提示",
JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e) {
} } public void keyTyped(KeyEvent evt) {
}
});我的理解是keyTyped方法实际上是一个pressed和realsed方法的组合,既然是组合,那么系统肯定会截取一个发生时间最早的时候JTextField里的内容,也就是说是pressed时候的快照,那么显然这是你想输入的数据还没有输进去。但如果是选择在realsed方法里面处理的话,这时候数据已经输入,因此系统便可正确判断出来了
在JTextField里添加键盘事件来监听JTextField的内容变化并不是很好的方法.
正确的方法是JTextField.getDocument().addDocumentListener();
写个类实现DocumentListener接口,如下: JTextField.getDocument().addDocumentListener(new DocumentListener(){
public void insertUpdate(DocumentEvent e) {
//在这里写相应的处理代码
}
public void removeUpdate(DocumentEvent e) {
//如果希望对文本框内容的删除事件做处理
//在这里写代码
}
public void changedUpdate(DocumentEvent e) {
//一般用不到这个方法
}
});