我有一个用于Double值的JTextField作为输入,保存在一个双变量中:
JTextField textfield1 = new JTextField("0.0");
public void actionPerformed(ActionEvent arg0) {
d1 = Double.parseDouble(textfield1.getText());
d2 = Double.parseDouble(textfield1.getText());
}
d3 = d1 +d2 ;
如果我在textfield1 =(10.2)中输入示例,它将同时保存在(d1)和(d2)中,然后(d3)=(22.4)
但是我想要输入的第一个值(2.5)保存在(d1)并且从未改变然后下一个值i输入如(3.5)保存在(d2)中并且从未改变然后(d3)=(6.5)
如何我可以帮忙吗?。
答案 0 :(得分:1)
这不是一个真正的Swing问题,而是一个基本的逻辑问题,一个解决方案很简单:使用布尔字段,比如d1Assigned,将其设置为false。
在actionPerformed方法中,通过if块检查布尔值。如果为false,则将其设置为true并指定d1。如果为true,则不指定d1。
private boolean d1IsAssigned = false;
// .....
@Override
public void actionPerformed(ActionEvent e) {
if (!d1IsAssigned) {
d1 = ....;
d1IsAssigned = true;
}
// assign other fields here
}
或者,另一种方法是在通过将其设置为不再启用后从中获取数据后“锁定”textfield1。类似的东西:
@Override
public void actionPerformed(ActionEvent e) {
if (textField1.isEnabled()) {
d1 = Double.parseDouble(textfield1.getText());
textField1.setEnabled(false);
}
d2 = Double.parseDouble(textfield1.getText());
// assign other fields here
// do calculation
}
我更喜欢这个,因为现在用户无法与文本字段进行交互,知道它的值已被“锁定”。
答案 1 :(得分:0)
尝试以这种方式使用switch
:
int count = 0;
switch(count){
case 0:
d1 = Double.parseDouble(textfield1.getText());
count++;
break;
case 1:
d2 = Double.parseDouble(textfield1.getText());
count--;
break;
default:
break;
}
d3 = d1 +d2 ;