我正在开发一个Java Swing应用程序,它有一个使用JButtons的数字键盘。它有数字0 - 9,小数点和输入按钮。显然,按钮上的数字只是一个字符而不是我想要的整数。
我希望用户能够点击按钮输入货币金额,例如$ 25.68。当他们完成后,他们将按回车。
我想拿这个数量并把它变成一个双变量。
在actionPerformed函数中,我将按照惯例执行:
if (e.getSource() == numberButton1){
//put in first index of array
}
最初我以为我会把它放到一个整数数组中并通过将其指定为-1并将输入指定为-2来解释点按钮。但是一旦我在数组中有数字它们就会倒退,我知道我可以通过计算元素的数量并从最后一个索引开始然后使用因子10来反向读出它们但是所有这些似乎过度复杂。更不用说必须考虑小数位了。所以在我开始编写一百万行代码之前,我想我会问......
......有一种简单的方法吗?
答案 0 :(得分:2)
考虑一下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);
//...
例如......
答案 1 :(得分:0)
以字符串形式连接所有输入 然后在输入按钮单击时将字符串解析为double
声明
String value ="";
double val =0;
每个按钮
value=value+"3";
和...
value=value+".";
等等。
然后在输入按钮
val =Double.parseDouble(value);
现在它的numiric double ...使用它
答案 2 :(得分:0)
声明全局String值。对于每个数字或点(。)按钮,请将数字或点连接到字符串。然后在需要使用时将字符串解析为double。这是一个例子:
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:如果用户按两次点,请不要忘记添加支票。你不能有两位小数。