Как я могу заставить цикл while ждать нажатия JButton?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу заставить цикл while ждать нажатия JButton?

Сообщение Anonymous »

Я новичок в Java и пытаюсь создать программу, которая просит угадать случайное число от 1 до 77. Как я могу сделать так, чтобы цикл while в этом коде запускался только тогда, когда ответ был предоставлен в JField, и кнопка была нажата? Прямо сейчас эта программа просто пропускает цикл while при запуске и просто отображает сообщение о потере.
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;

public class NumberGame {
private static int guess = 0;

private static int presses = 0;

public static void main(String[] args) {
JFrame window = new JFrame("Number Game");
window.setLayout(new BorderLayout());

JPanel topPanel = new JPanel();
JPanel bottomPanel = new JPanel();
JPanel centerPanel = new JPanel();

JLabel topLabel = new JLabel("Pick numbers from 1 to 77.");
topPanel.add(topLabel, BorderLayout.NORTH);

JTextField field = new JTextField(10);
field.setPreferredSize(new Dimension(80,20));
topPanel.add(field, BorderLayout.CENTER);

JButton button = new JButton("Guess");
button.addActionListener(e -> {
if (field.getText() != "") {
guess = Integer.parseInt(field.getText());
field.setText("");
presses ++;
}
});
button.setPreferredSize(new Dimension(100,40));
centerPanel.add(button, BorderLayout.NORTH);

JLabel bottomLabel = new JLabel("Enter your guess");
bottomPanel.setLayout(new BorderLayout());
bottomPanel.add(bottomLabel, BorderLayout.CENTER);

//Generate a random number using the math class
int num = (int)(77*Math.random())+1;
//System.out.println(num);

int guesses = 5;

guess = -1;
presses = 0;

window.add(topPanel, BorderLayout.NORTH);
window.add(bottomPanel, BorderLayout.SOUTH);
window.add(centerPanel, BorderLayout.CENTER);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(300,200);
window.setVisible(true);

while (guess != num && guesses > 0 && presses == (5-guesses)) {
if (guess > num && guess != -1) {
bottomLabel.setText("Skill issue, too big. Try again. ");
}else if (guess < num && guess != -1){
bottomLabel.setText("Ha ha, too small. Try again. ");
}
guesses --;
presses ++;
}

if (guesses > 0) {
bottomLabel.setText("GG! You won! You had " + guesses + " guesses remaining.");
}else {
bottomLabel.setText("lol ur bad you lose. The number was " + num + ".");
}

}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... be-pressed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу заставить цикл while ждать нажатия JButton?
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить цикл while ждать нажатия JButton?
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить цикл while ждать нажатия JButton?
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • JAVA, Как заставить основную функцию ждать выполнения кода до тех пор, пока не будет нажата JButton
    Anonymous » » в форуме JAVA
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous
  • Как сделать JPanel видимой после нажатия кнопки JButton на JFrame
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»