JavaFX: изменение объекта TextField или Text в классе контроллера, сохраняя при этом разделение вида и контроллера - PullRequest
0 голосов
/ 01 марта 2019

Я изо всех сил пытаюсь найти способ изменить объекты TextField и Text класса представления из класса контроллера, не просто передавая TextField и Texts в контроллер, а затем изменяя их с помощью команд, таких как textField.setText (), которыеЯ знаю, что это нарушает идею разделения.Я создаю игру, чтобы угадать число от 1 до 50.

Пример:

Просмотр класса:

Этот класс создаст сцену с метками, текстами иТекстовые поля для пользовательского ввода, а также кнопки.Есть кнопка, позволяющая угадать правильность введенного вами числа в TextField.Когда нажата кнопка «угадать», я вызываю метод setOnAction в классе представления, который затем вызывает метод из класса контроллера для обработки событий.Я понимаю, что не могу просто передать TextField в Controller, потому что вам нужно держать представление отдельно от контроллера, чтобы я мог передать TextField.getText () и Text.getText (), как показано ниже, чтобы преобразовать его всначала строка, которая держит их отдельно.В этом примере в поле namedNumber задано TextField, а в результате - Text.

guessButton.setOnAction(e -> guessingGameController.guessButtonAction(enteredNumber.getText(), result.getText()));

Затем я читаю и обрабатываю данные в классе контроллера:

public void guessButtonAction(String enteredNumber, String result) {

        int enteredValue = Integer.parseInt(enteredNumber);

            if (enteredValue == randomNum) {
                result = ("YOU WON!!!");
            } 
            else if (enteredValue != randomNum) {
                result = ("Unlucky the number was " + randomNum);
        }
    }

Я понимаю, что могу просто вернутьстроковый результат из контроллера, а затем класс представления заставляет Text resultBox установить текст следующим образом:

 guessButton.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent event) {
                String result = guessButtonAction( 
                      enteredNumber.getText(), result.getText());
                resultBox.setTex(result);
            }
        });

Но есть несколько кнопок, которые должны были бы возвращать более одной переменной, что означало быЯ должен вернуть массив, который я чувствую, усложняет вещи слишком много.Есть ли какой-нибудь другой способ сделать это, не запутавшись и не поддерживая разделение графического интерфейса и обработку данных?Я прошу прощения за длинный вопрос, я надеюсь, что объяснил это достаточно хорошо.

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