I'm doing a assignment on Java Swing and I'm making a GUI Guessing Game program. My question is when I press the "guess" button nothing happens, I can't close it by clicking X I have to terminate it with Eclipse. What did I do wrong? Is the GuessHandler correct implementing ActionListener or did I do something wrong there?
public class GuessingGameGui extends JFrame
{
    public static final int WIDTH = 600;
    public static final int HEIGHT = 400;
    private JTextField theText;
    private JLabel message;
    private JPanel p1;
    private JPanel p2;
    private int guess;
    private int numberOfTries = 0;
    public GuessingGameGui()
    {
        super();
        setSize(WIDTH, HEIGHT);
        //set the window title to "Guessing Game"
        setTitle("Guessing Game");
        Container c = getContentPane();
        c.setLayout(new BorderLayout( ));
        c.setBackground(Color.WHITE);
        p1 = new JPanel();
        p2 = new JPanel();
        p1.setBackground(Color.WHITE);
        p2.setBackground(Color.BLUE);
        //"add a JButton called "Guess"
        JButton guessButton = new JButton("Guess");
        GuessHandler ghandler = new GuessHandler();
        guessButton.addActionListener(ghandler);
        p1.add(guessButton);
        //The north panel will have a JLabel with the text "Guess a number between 1 and 10?"
        JLabel label1 = new JLabel("Guess a number between 1 and 10?");
        c.add(label1, BorderLayout.NORTH);
        //The south panel will have a JLabel for displaying if the user guessed correctly or not 
        message = new JLabel("");
        p2.add(message, BorderLayout.SOUTH);
        c.add(p2, BorderLayout.SOUTH);
        JPanel textPanel = new JPanel( );
        textPanel.setBackground(Color.LIGHT_GRAY);
        //In the center panel, add a JTextField where the user can enter a number to guess
        theText = new JTextField(10);
        theText.setBackground(Color.WHITE);
        textPanel.add(theText);
        textPanel.add(p1);
        c.add(textPanel, BorderLayout.CENTER);
    }
    public static void main(String[] args)
    {
        GuessingGameGui guessGame = new GuessingGameGui();
        guessGame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        guessGame.setSize(WIDTH, HEIGHT);
        guessGame.setVisible(true);
    }
    class GuessHandler implements ActionListener {
        @Override
        public void actionPerformed( ActionEvent e )
        {
            int numberToGuess = (int) (Math.random() * 10 + 1);
            Scanner input = new Scanner (System.in);
            boolean win = false;
            while (win == false){
                guess = input.nextInt();
                numberOfTries++;
                if (guess < 1 || guess > 10)
                {
                    //Make the south panel background color RED if they entered an invalid number (not between 1 and 10)
                    p2.setBackground(Color.RED);
                }
                else if (guess == numberToGuess)
                {
                    win = true;
                    //Make the south panel background color YELLOW if they guessed right
                    p2.setBackground(Color.YELLOW);
                    //and display "YOU GOT IT (n attempts)", where n is the number of attempts the user guessed
                    message.setText("YOU GOT IT (" +numberOfTries + "attempts)");
                }
                else
                {
                    //Make the south panel background color GREY if they guessed wrong
                    p2.setBackground(Color.GRAY);
                    //display "Sorry try again"
                    message.setText("Sorry try again");
                }
            }
        }
    }
}
 
     
    