我有32个文本字段,我想添加一个KeyListener,它确保只接受数字输入。我对所有文本字段的keyTyped()函数使用相同的函数声明,但是当我在for循环中将它分配给JTextFields(txtPw)数组时,它根本不接受任何输入。
for (i = 0; i < 32; i++)
{
txtsPw[i].addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
if (!(Character.isDigit(e.getKeyChar()) || (e.getKeyChar()=='.')))
e.consume();
else if (e.getKeyChar()=='.' && txtsPw[i].getText().length() - txtsPw[i].getText().replace(".", "").length() > 0)
e.consume();
else if (txtsPw[i].getText().length() > 7)
e.consume();
}
});
}
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
你可以制作两个JTextFields
一个是可编辑的而且一个是不可编辑的,所以当用户输入数字并将其发送到另一个文本框时,你可以检查它是否是一个数字或不。如果你想我可以提供一个例子,尽管如此,我希望你能尝试自己解决这个问题。
答案 1 :(得分:0)
这个怎么样?
for (i = 0; i < 32; i++)
{
createKeyListener(txtsPw[i]);
}
private void createKeyListener(TextView tv)
{
tv.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
if (!(Character.isDigit(e.getKeyChar()) || (e.getKeyChar()=='.')))
e.consume();
else if (e.getKeyChar()=='.' && tv.getText().length() - tv.getText().replace(".", "").length() > 0)
e.consume();
else if (tv.getText().length() > 7)
e.consume();
}
});
}