@joha0738

Почему программа не хочет выполнять метод вызванный через клавиатуру и как это исправить?

Есть метод
public void number (String n) {
        if (Result.getText().length() < 14) {
            wer[0] = wer[0] + n;
            Result.setText(wer[0]);
        }
    }

который выводит на экран
@FXML
    private Text Result = new Text();
числа которые вводит пользователь.
если к этому методу обращаться кликая мышкой по кнопкам в приложение например
btn1.setOnAction(actionEvent -> {
            number("1");
        });

то все работает как задумано, но если обращаться к этому же методу через клавиатуру
public void sd(KeyCode q){
        switch (q){
            case NUMPAD0: number("0"); break;
            case NUMPAD1: number("1"); break;
            case NUMPAD2:  break;
            case NUMPAD3:  break;
            case NUMPAD4:  break;
            case NUMPAD5:  break;
            case NUMPAD6:  break;
            case NUMPAD7:  break;
            case NUMPAD8:  break;
            case NUMPAD9:  break;
            case ADD: plus(); break;
            default: System.out.println("NOT FOUND: "+q);;
        }
    }

то он просто игнорирует и ничего не делает и не выводит никакую ошибку, если заменить case NUMPAD0: number("0"); break; на case NUMPAD0: System.out.println("0"); break; break; то все работает. и в терминале появляется нужное число.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Очевидно, что у вас проблема с этим методом:
public void number (String n) {
        if (Result.getText().length() < 14) {
            wer[0] = wer[0] + n;
            Result.setText(wer[0]);
        }
    }

Например, при вызове условие ветка if не выполняется.

Также не очень понятно, как вы вызываете метод number();, если он нестатичен. У вас есть некий экземпляр класса?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы