JavaFX - метод, который ожидает ввода пользователя - PullRequest
0 голосов
/ 13 декабря 2018

Я пишу простую текстовую игру, и я решил перейти от отображения
в cmd к отображению в пользовательском окне, которое состоит из одной TextArea, использованной
для вывода и ввода данных пользователем.Поэтому мне нужен метод, который ожидает строку, которую
пользователь пишет, а затем возвращает ее.
В Swing я бы сделал что-то вроде этого (в классе Window):

public String nextToken() {
    synchronized (nextToken) {
        while (nextToken.isEmpty())
            try {
                nextToken.wait();
            } catch (InterruptedException e) {
                print(e.getLocalizedMessage());
            }
        String tmp = nextToken.remove(0);
        lastToken = text.getText();
        newLine();
        return tmp;
    }
}  

ИActionListener для удара введите:

public void actionPerformed(ActionEvent arg0) {
            synchronized (nextToken) {
                nextToken.add(text.getText().substring(lastToken.length(), text.getText().length()));
                nextToken.notify();
            } }; };

Но когда я создаю окно с помощью JavaFX, а затем пытаюсь использовать этот метод, окно зависает.
Что делать, чтобы окно отображалось правильно и ожидалопользовательский ввод?
Буду благодарен за любой совет

1 Ответ

0 голосов
/ 13 декабря 2018

Звучит так, как будто вы ожидаете ввода в главном потоке, который заблокирует его, поэтому ваше окно зависнет.Попробуйте поместить код ожидания (метод nextToken) в отдельный поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...