Я изо всех сил пытаюсь найти способ изменить объекты 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);
}
});
Но есть несколько кнопок, которые должны были бы возвращать более одной переменной, что означало быЯ должен вернуть массив, который я чувствую, усложняет вещи слишком много.Есть ли какой-нибудь другой способ сделать это, не запутавшись и не поддерживая разделение графического интерфейса и обработку данных?Я прошу прощения за длинный вопрос, я надеюсь, что объяснил это достаточно хорошо.