【发布时间】:2019-10-25 19:32:51
【问题描述】:
我正在尝试从按键上的 JTextField 检索值,以在值是整数时执行某些操作,如果值不是整数,则清除该字段。每次我尝试检索值时,我都会得到之前输入的值(如果我输入 12,我会得到 1,如果我输入 123,我会得到 12),当我尝试清除无效字符上的字段时,除了无效字符被清除?
public void setUpListeners()
{
JTextField jT [] = myV.getTextFields();
jT[0].addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e){
int id = e.getID();
if (id == KeyEvent.KEY_TYPED)
{
char c = e.getKeyChar();
try
{
//check if chars entered are numbers
int temp = Integer.parseInt(String.valueOf(c));
String tempS = jT[0].getText();
System.out.println(tempS);
}
catch(Exception ex)
{
jT[0].setText("");
System.out.println("Not an integer");
}
}
}
});
}
【问题讨论】:
-
不要使用
KeyListener,请参阅Restricting JTextField input to Integers 以获得更好的实现,使用DocumentFilter.或JFormattedTextField。 -
不要使用文本字段。
new JSpinner(new SpinnerNumberModel(5,0,100,1));对最终用户更友好。
标签: java swing keylistener