Управляемая событиями модель графического интерфейса прерывает последовательный логический код.
Чтобы сохранить последовательную логику, можно поддерживать состояние, например, перечисление:
enum State {
PROMPTING,
ASKING_TWO_FIELDS,
ASKING_THREE_FIELDS,
CALCULATING,
DONE
};
private State state = State.DONE;
(Это явная абстракция часто требуется только для перехода от последовательной логики или нескольких государств на том же формы.)
Затем нажмите кнопку и измените состояние и отключите входные компоненты.
События происходят из асинхроны, возможно даже на разных потоках. Нужно написать реактивный код. И при подготовке вещей прокладывайте вместе то, что должно произойти при нажатии кнопки. Это очень фрагментарно.
Одно из решений этого хаоса разделено на классы Model-View-Control. Классы моделей содержат данные, View - это компоненты GUI, и один контроллер, приложение, вызывается из представлений, задает данные и управляет представлениями.
Вызывается из представлений для качания с использованием прослушивателей.
Рецепт:
- Сделать основной класс является контроллер
- класс модели данных
- вид сверху, класс GUI, JFrame на (качели) или JavaFX сцены
- Контроллер сохраняет модель и вид в виде полей
- Контроллер передает себя на вид
- Составьте свою последовательную логику в состояние перечисления, в c ontroller
- Запись функций перехода.
- Вместо ожидания добавьте ActionListeners в butten (swing)/ButtonHandlers (JavaFX), который вызывает i.a. switchState.
- Наилучшие имена методов использования, выражающие бизнес-логику:
startTranslating
(текст опущен на приложение), manualTranslationDone
(кнопка «переведена» нажата после ручного редактирования).
Почему бы вам не зациклиться в первую очередь, когда вы все еще ждали, когда пользователь нажмет кнопку/входные данные? – SomeJavaGuy
Итак, «в Netbeans» вы, вероятно, имеете в виду, что используете дизайнер пользовательского интерфейса Netbeans для рисования окна вашей программы? Netbeans - это только редактор, вы все еще создаете здесь программу Java, а не «программу netbeans». – Gimby
Кевин Эше, это потому, что в другой ситуации у меня есть различное количество ввода от пользователя. Например, в ситуации 1 пользователю необходимо ввести 3 данных. Принимая во внимание, что в ситуации 2, 4 данные для входа. Вот почему я использую цикл. – user5595027