2016-10-13 3 views
0

i habe eine JTextField für Doppelwerte als Eingabe, die in einer Doppel-Variablen gespeichert:

Wie kann ein Wert aus JTextField in einer Variablen als nicht editierbarer Wert gespeichert werden?

JTextField textfield1 = new JTextField("0.0"); 


public void actionPerformed(ActionEvent arg0) { 

     d1 = Double.parseDouble(textfield1.getText()); 
     d2 = Double.parseDouble(textfield1.getText()); 

    } 
      d3 = d1 +d2 ; 

wenn ich als Beispiel in dem TextField1 eingeben = (10,2) es wird in beide (d1) gespeichert werden, und (d2) also dann (d3) = (22.4)
ABER ich möchte, dass der erste Wert wie (2.5) eingegeben wird, um in (d1) gespeichert zu werden und nie geändert wird dann nächster Wert ich gebe wie (3.5) ein um gespeichert zu werden (d2) und änderte sich nie so dann (d3) = (6.5)

WIE kann ich das irgendwie helfen?

+0

put ein, wenn Block in Ihrer actionPerformed Methode, die d1 nur einmal zugeordnet werden kann. –

+0

habe ich Ihnen schon gesagt wie oben. –

+0

Siehe Bearbeiten für eine noch bessere "idiotensichere" Lösung. –

Antwort

1

Dies ist nicht wirklich eine Swing-Frage, sondern eine grundlegende logische Frage, und eine Lösung ist einfach: Verwenden Sie ein boolesches Feld, sagen wir d1Assigned, setzen Sie es auf false.

Überprüfen Sie in der actionPerformed-Methode den booleschen Wert über einen if-Block. Wenn false, dann setze es auf true und weise d1 zu. Wenn wahr, dann weise d1 nicht zu.

private boolean d1IsAssigned = false; 

// ..... 

@Override 
public void actionPerformed(ActionEvent e) { 
    if (!d1IsAssigned) { 
     d1 = ....; 
     d1IsAssigned = true; 
    } 

    // assign other fields here 
} 

Oder eine andere Art und Weise zu „sperren“ TextField1, nachdem Sie Ihre Daten aus, indem Sie ihn erhalten haben, nicht mehr fähig zu sein. Etwas wie:

@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 
} 

Ich mag diese noch besser, da nun der Benutzer kann mit dem Textfeld nicht in Wechselwirkung treten und weiß, dass sein Wert ist „gesperrt“.

0

Versuchen switch auf diese Weise mit:

 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

danke, ich werde 2 – Fashtaki

Verwandte Themen