java字段值总和

时间:2011-05-04 11:59:16

标签: java

   public static void main(String[] args)
    {
        JFrame frame = new JFrame("test");
        JPanel panel = new JPanel();

        Component a[] = null;

        for(int i=0; i<3; i++)
        {
            final JTextField t = new JTextField();
            t.setColumns(5);

            a[i] = t;

            t.addKeyListener(new KeyListener() {

                public void keyReleased(KeyEvent e) 
                {

                }

                public void keyTyped(KeyEvent e) {}
                public void keyPressed(KeyEvent e) {}
            });
            panel.add(t);
        }

        JTextField sum = new JTextField();
        sum.setColumns(5);
        panel.add(sum);

        JScrollPane spanel = new JScrollPane(panel);
        frame.add(spanel);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }

如何在每个字段按键i后,从循环中显示的所有字段

中对值求和

2 个答案:

答案 0 :(得分:1)

您可以尝试首先将所有文本字段添加到数组中,然后在按下某个键时,迭代数组并对值求和。

答案 1 :(得分:1)

由于您使用固定数量的文本字段(上面的代码示例中为3),我将使用数组来保持对它们的引用,并计算按下键时写入其中的值的总和。然后,您可以遍历数组(如果您选择包含更多文本字段,则使用大小为3或其他大小)并对文本字段中的所有数字求和。扩展您已经提供的代码,它看起来像:

public static void main(String[] args)
{
     JFrame frame = new JFrame("test");
     JPanel panel = new JPanel();
     int nrOfTextFields = 3;
     JTextField[] textFields = new JTextField[nrOfTextFields];
     int sumOfallTextFields = 0;
     for(int i=0; i<nrOfTextFields; i++)
     {
         final JTextField t = new JTextField();
         t.setColumns(5);
         t.addKeyListener(new KeyListener()
         {
              public void keyReleased(KeyEvent e)
              {
                     sumOfAllTextFields = 0;
                     for(int i=0; i<nrOfTextFields; i++)
                     {
                            int textFieldValue = Integer.parseInt(textFields[i].getString());
                            sumOfAllTextFields += textFieldValue;
                     }
              }
              public void keyTyped(KeyEvent e) {}
             public void keyPressed(KeyEvent e) {}
         });
         panel.add(t);
     }
     JTextField sum = new JTextField();
     sum.setColumns(5);
     panel.add(sum);
     JScrollPane spanel = new JScrollPane(panel);
     frame.add(spanel);
     frame.setSize(800, 600);
     frame.setVisible(true);
 } 

这假设在文本字段中输入的数字是整数。也没有检查用户是否在文本字段中输入了有效数字(例如,没有文字或符号)。