2014-05-17 41 views
0

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

我希望用户能够点击按钮输入货币金额,例如$ 25.68。当他们完成后,他们将按下输入。

我想把这个数量,并把它放到一个双变量。

在actionPerformed功能,我会做平常:

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

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

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

回答

0

声明全局字符串值。对于每个数字或点(。)按钮,将数字或点连接到字符串。然后在需要使用它时将字符串解析为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:不要忘记添加检查,如果用户点两次点。你不能有两位小数。

0

串联在串 所有的输入然后在进入按钮点击解析字符串为双

Declar

String value =""; 
double val =0; 

在每个按钮

value=value+"3"; 

而且......

value=value+"."; 

依此类推。

然后在进入按钮

val =Double.parseDouble(value); 

现在它numiric双...使用它

+0

对不起,不格式化。我在移动 – Yazan

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); 
//... 

例如...

相关问题