2016-05-06 8 views
0

Я создаю приложение 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); 
    } 

} 

Что предполагают сделать

Когда пользователь вводит число в текстовое поле программа предполагает, чтобы взять это число и добавить его сумму = 0;

Моя проблема

Но когда когда-либо с помощью вводит новый номер изменения текста в That число. Помните, я хотел бы, чтобы он добавлял к числу смородины, например (число смородины = 23; пользователь вводил новый номер) новое число = 3; Я бы хотел, чтобы результаты равны = 26, но прямо сейчас программа показывает результат 3;

То, что я думаю, что

Я думаю, что проблема в методе OnAction(). Я думаю, что метод text.setText() отображает текст смородины, введенный в текстовое поле, а затем добавляя его к объему.

Я также не думаю, что использую правильный оператор из этой строки кода. Это может быть частью проблемы.

text.setText (Double.toString (getamount) + количество);

Извещение о том, как я использую знак +, который + добавляет getamount к объему ... или его предполагается. Но когда я меняю этот знак плюса на - или *, я получаю эту ошибку

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

плохих типов операндов для бинарного оператора '*'

первого типа: Струнный

второго типа: TextField

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

Как вы, вероятно, можете сказать, что я действительно хотел бы, чтобы этот код был правильно, если вы не понимаете что-то, прокомментируйте, прежде чем сообщить мне. Тогда я могу быстро его изменить. Спасибо!

ответ

0

Вы добавляете 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); 
    } 

} 
+0

Не я получил ошибку. Этот вопрос может потребовать, чтобы вы скопировали и ввели мой код и протестировали его. –

+0

Какая ошибка? – 0xtvarun

+0

';' ожидаемый, а затем я также получаю ошибку, getmount не был инициализирован –

Смежные вопросы