Все известна игра "Угадай число". Проблема в следующей: когда игрок угадывает число, появляется кнопка Play Again, которая должна перезапустить игру и пропасть опять, но она ни перезапускает игру ни пропадает.
import javax.swing.JFrame;
import java.awt.Window.Type;
import javax.swing.JLabel;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GuesstingGame extends JFrame {
private JTextField txtGuess;
private JLabel lblOutput;
private int theNumber;
private JButton btnPlayAgain;
public void checkGuess() { //Own method
String guessText = txtGuess.getText();
String message = "";
int guess = Integer.parseInt(guessText);
if (guess < theNumber)
message = guess + " is too low. Try again.";
else if (guess > theNumber)
message = guess + " is too high. Try again.";
else {
message = guess + " is correct. You win!.";
btnPlayAgain.setVisible(true);
}
lblOutput.setText(message);
}
public void newGame() { //Own method
theNumber = (int)(Math.random() * 100 + 1);
}
public GuesstingGame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Ваше имя Hi-Lo Guessting Game");
getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("Ваше Имя Hi-Lo Guessing Game");
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 15));
lblNewLabel.setBounds(0, 0, 434, 21);
getContentPane().add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("Guess a number between 1 and 100:");
lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 12));
lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
lblNewLabel_1.setBounds(36, 45, 247, 21);
getContentPane().add(lblNewLabel_1);
txtGuess = new JTextField();
txtGuess.setHorizontalAlignment(SwingConstants.RIGHT);
txtGuess.setBounds(293, 47, 65, 19);
getContentPane().add(txtGuess);
txtGuess.setColumns(10);
JButton btnGuess = new JButton("Guess!");
btnGuess.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
checkGuess();
}
});
btnGuess.setFont(new Font("Tahoma", Font.BOLD, 13));
btnGuess.setBounds(168, 111, 98, 36);
getContentPane().add(btnGuess);
lblOutput = new JLabel("Enter a number above and click Guess!");
lblOutput.setFont(new Font("Tahoma", Font.PLAIN, 12));
lblOutput.setHorizontalAlignment(SwingConstants.CENTER);
lblOutput.setBounds(0, 171, 434, 21);
getContentPane().add(lblOutput);
btnPlayAgain = new JButton("Play Again?");
btnPlayAgain.setVisible(false);
btnPlayAgain.setFont(new Font("Tahoma", Font.BOLD, 11));
btnPlayAgain.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newGame();
btnPlayAgain.setVisible(false);
}
});
btnPlayAgain.setBounds(168, 203, 98, 36);
getContentPane().add(btnPlayAgain);
}
public static void main(String[] args) {
GuesstingGame theGame = new GuesstingGame();
theGame.newGame();
//Ключевые слова new Dimension() в круглых скобках метода
//setSize() сообщают компилятору Java о создании объекта типа
//Dimension с шириной 450 пикселей и высотой 300 пикселей
theGame.setSize(new Dimension(450, 300));
//Наконец, добавьте в метод main() следующую строку, чтобы
//приложение появилось на экране:
theGame.setVisible(true);
}
}