如何将变量中的JTextField值保存为不可编辑的值?

时间:2016-10-13 20:32:16

标签: java swing

我有一个用于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)
如何我可以帮忙吗?。

2 个答案:

答案 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 ;