从textfield添加值

时间:2016-05-06 04:17:18

标签: javafx parameter-passing

我正在创建一个java应用程序,但我遇到了问题。 这是代码。

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);
    }

}

该做什么

当用户在文本字段中输入数字时,程序被认为是 取这个数字并将其添加到ammount = 0;

我的问题

但是当使用输入新号码时,文字会变为那个号码。记住我希望它添加到醋栗数量(醋栗数量= 23;用户输入新数字)新数字= 3;我希望结果等于= 26但是现在程序显示结果3;

我的想法

我认为问题出在onAction()方法中。 我认为text.setText()方法显示输入文本字段的currant文​​本,而不是将其添加到ammount。

我不认为我在这行代码中使用了正确的运算符。这可能是问题的一部分。

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

注意我如何使用+符号,+将getamount添加到ammount ..或者它应该是。但是,当我将加号更改为 - 或*我收到此错误

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

二元运算符'*'

的错误操作数类型

第一种类型:字符串

第二种类型:TextField

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

你可能会说我真的希望这段代码是正确的,所以如果你不明白的话请在报告之前发表评论。然后我可以快速改变它。谢谢!

1 个答案:

答案 0 :(得分:1)

您在amount

时将getAmount添加到amount = 0.0变量

尝试将新值添加到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);
    }

}