2016-05-06 21 views
0

Ich erstelle eine Java-Anwendung und ich habe ein Problem. Hier ist der Code.Wert aus Textfeld

package javastackoverflow; 

import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.FlowPane; 
import javafx.stage.Stage; 


public class Javastackoverflow extends Application { 
     TextField deduct2; 
    Label text; 
     double ammount = 0.0; 
    @Override 
    public void start(Stage primaryStage) { 
     Button btn = new Button(); 
     btn.setText("Apply"); 
     text = new Label(Double.toString(ammount)); 

     btn.setOnAction((e->{ 



     double getamount = Double.parseDouble(deduct2.getText()); 
     text.setText(Double.toString(getamount)+ ammount); 
     //this is where the program is suppose to get the amount and add it to amount, notice the + sign. 
     })) 

; 

     deduct2 = new TextField(); 
     FlowPane root = new FlowPane(); 
     root.setAlignment(Pos.CENTER); 
     root.getChildren().addAll(btn,deduct2,text); 

     Scene scene = new Scene(root, 400, 450); 

     primaryStage.setTitle("Yo Stack"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 

Was es ist wohl

zu tun, wenn der Benutzer eine Nummer in das Textfeld geht das Programm zu annehmen, um diese Zahl zu nehmen und fügen Sie es = 0 bis ammount;

Mein Problem

Aber wann immer die Verwendung der Textänderungen zu Der Nummer eine neue Nummer eingibt. Denken Sie daran, ich möchte es der Johannisbeere Nummer wie hinzufügen (Johannisbeere Nummer = 23; Benutzer gibt neue Nummer) neue Nummer = 3; Ich möchte, dass die Ergebnisse gleich sind = 26, aber jetzt zeigt das Programm das Ergebnis 3;

Was ich denke,

denke ich, das Problem in der onAction() -Methode ist. Ich denke, dass die text.setText() -Methode den in das Textfeld eingegebenen Text anzeigt, anstatt ihn zu ammount hinzuzufügen.

Ich glaube nicht, dass ich den richtigen Operator aus dieser Codezeile verwende. Das könnte Teil des Problems sein.

text.setText (Double.toString (getamount) + ammount);

beachten Sie, wie ich das + Zeichen verwende, dass + fügt den getamount zu ammount..oder sein soll zu. Aber wenn ich ändern, dass Pluszeichen - oder * ich diesen Fehler

===============================

schlechte Operandentypen für den binären Operator '*'

ersten Typ: String

Sekunden Typ:

TextField-

================= ==============

Wie Sie wahrscheinlich sagen können, ich möchte wirklich diesen Code zu sein Korrekt also, wenn Sie etwas nicht verstehen, bitte kommentieren, bevor Sie mich melden. Dann kann ich es schnell ändern. Vielen Dank!

Antwort

0

Sie fügen die amount, um die getAmount Variable, wenn amount = 0.0

Versuchen Sie, den neuen Wert zu getAmount

package javastackoverflow; 

import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.FlowPane; 
import javafx.stage.Stage; 


public class Javastackoverflow extends Application { 
     TextField deduct2; 
     Label text; 
     double getamount = 0.0; //Edit 1 
    @Override 
    public void start(Stage primaryStage) { 
     Button btn = new Button(); 
     btn.setText("Apply"); 
     text = new Label(Double.toString(ammount)); 

     btn.setOnAction((e->{ 



     getamount += Double.parseDouble(deduct2.getText()); //Edit 2 
     text.setText(Double.toString(getamount)); 
     //this is where the program is suppose to get the amount and add it to amount, notice the + sign. 
     })) 

; 

     deduct2 = new TextField(); 
     FlowPane root = new FlowPane(); 
     root.setAlignment(Pos.CENTER); 
     root.getChildren().addAll(btn,deduct2,text); 

     Scene scene = new Scene(root, 400, 450); 

     primaryStage.setTitle("Yo Stack"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 
+0

Zugabe Nope ich eine Fehlermeldung anzeigt. Bei dieser Frage müssen Sie möglicherweise meinen Code kopieren und einfügen und ihn testen. –

+0

Was ist der Fehler ?? – 0xtvarun

+0

';' erwartet und dann bekomme ich auch den fehler, getmount wurde nicht initialisiert –