使用for循环

时间:2018-04-23 11:51:28

标签: java for-loop jtextfield keylistener

我有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();
               }
        });
}

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 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();
           }
    });
}