2016-10-13 22 views
0

我有雙值作爲輸入,其保存在一個雙變量一個JTextField:

如何將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 ; 

如果我在它將被保存在兩個(D1)的textfield1的=(10.2)實施例輸入和( d2)那麼然後(d3)=(22.4)
但我希望我輸入的第一個值像(2.5)將被保存在(d1)中並且永不改變,然後我輸入的下一個值像(3.5)將被保存在(d2) (d3)=(6.5)

我該怎麼做,請幫忙嗎?

+0

放的,如果在你的actionPerformed方法的基石,使得D1僅被分配一次。 –

+0

我已經按照上面的方法告訴你了。 –

+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設置爲不再啓用​​之後「鎖定」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 
} 

我喜歡這個甚至更好,因爲現在用戶不能與文本字段交互和知道,它的價值被「鎖定」。

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 ; 
+0

謝謝,我會2 – Fashtaki

相關問題