2015-09-20 4 views
0

У меня есть окно (например, командная строка), и когда я набираю «вычисление», он должен начать процесс калькулятора. Когда я печатаю «калькулятор», он говорит «активированный калькулятор» и «пожалуйста, введите свое первое значение».Создание input.getText принимает мой следующий ввод, а не мой последний

Проблема в том, что когда я ввожу это значение, я не знаю, как заставить его его использовать. Вместо этого он берет текст, когда я сказал «рассчитать» раньше.

Любые идеи о том, как я могу заставить его взять число, а не слово «рассчитать»?

public void calculate(){ 
    try{ 
     print("calculator activated" + "\n" + "please input your first value" + "\n", false, new Color(210, 190, 13)); 

     String words = input.getText(); 
     //trying to get it to take the number I input 

     print (words +"\n", false, new Color(210, 190, 13)); 
     //this print is to test what text it's saving as the 'words' variable 
     //all it prints is the word 'calculate' 
    } 
    catch (Exception ex){} 
} 

ответ

0

Вы печатаете приглашение вводить число и сразу читаете содержимое ввода. Так что да, вход в то время все еще содержит «расчет». Печать приглашения или вызов getText() в текстовом поле не блокируются, пока пользователь не стирает текст и не заменяет что-то еще. Он просто возвращает текущий текст в поле.

Приложения GUI не работают как консольные приложения. Они основаны на событиях. Ваш метод расчета не должен делать ничего другого, что печатает приглашение. У вас должен быть ActionListener в текстовом поле или на кнопке, так что, когда пользовательские типы вводят в текстовое поле или нажимают кнопку, вызывается слушатель и получает текст из текстового поля.

Прочитать tutorial about events.

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