【问题标题】:Best way to code numerical user entry with JButtons?使用 JButtons 编码数字用户输入的最佳方法?
【发布时间】:2014-05-17 19:43:14
【问题描述】:

我正在开发一个 Java Swing 应用程序,它有一个使用 JButtons 的数字键盘。它有数字 0 - 9、一个小数点和一个输入按钮。显然,按钮上的数字只是一个字符,而不是我想要的整数。

我希望用户能够单击按钮来输入货币金额,例如 25.68 美元。当他们完成后,他们会按回车键。

我想把这个数量放入一个双变量中。

在 actionPerformed 函数中,我将照常执行:

if (e.getSource() == numberButton1){
    //put in first index of array
}

最初我想我会将它放入一个整数数组中,并通过将它分配给 -1 并将输入作为 -2 来解释点按钮。但是,一旦我在数组中有数字,它们就会倒退,我知道我可以通过计算元素的数量并从最后一个索引开始,然后使用 10 的因子来反向读出它们,但这一切似乎都太过分了复杂。更不用说必须考虑小数位了。所以在我开始写一百万行代码之前,我想我会问...

...有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: java swing jbutton calculator currency


    【解决方案1】:

    考虑查看Actions API,它将允许您定义一个自包含的操作,您可以按照自己喜欢的方式进行配置

    例如...

    public class NumberAction extends AbstractAction {
    
        private char value;
        private JTextField field;
    
        public NumberAction(char value, JTextField field) {
            this.value = value;
            this.field = field;
            putValue(NAME, Character.toString(value));
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            String text = field.getText();
            text += value;
            field.setText(text);
        }
    
    }
    

    现在,我只是使用 char 作为基值,因为实际上,您实际上并没有使用任何类型的数值...

    你会构建你的按钮做类似的事情......

    JButton num7 = new JButton(new NumberAction('7', field);
    JButton num8 = new JButton(new NumberAction('8', field);
    JButton num9 = new JButton(new NumberAction('9', field);
    //...
    

    例如...

    【讨论】:

      【解决方案2】:

      声明一个全局字符串值。对于每个数字或点 (.) 按钮,按下将数字或点连接到字符串。然后在需要使用时将字符串解析为双精度。这是一个例子:

      String value = "";
      // Lines of code
      if (e.getSource() == numberButton1)
      {
          value += "1";
      }
      if (e.getSource() == dotButton)
      {
          value += ".";
      }
      // Do the same for other numbers
      // When you need the value as a double do the following
      double _value = Double.parseDouble(value);
      

      PS:如果用户按两次点,请不要忘记添加检查。不能有两位小数。

      【讨论】:

        【解决方案3】:

        连接字符串中的所有输入 然后在输入按钮单击将字符串解析为双精度

        声明

        String value ="";
        double val =0;
        

        在每个按钮上

        value=value+"3";
        

        还有……

        value=value+".";
        

        等等。

        然后按回车键

        val =Double.parseDouble(value);
        

        现在它的数字双…使用它

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-13
          • 2011-09-01
          • 2010-10-15
          • 2021-06-11
          • 1970-01-01
          • 2015-07-27
          • 2013-02-03
          相关资源
          最近更新 更多