Угадайка.field2 ничего не отображает.Кто-нибудь может сказать мне, что здесь не так? - PullRequest
0 голосов
/ 11 декабря 2018

В последнее время я много узнаю о Java GUI, и сейчас я пытаюсь создать игру с угадыванием чисел, в которой, если мы введем слишком большое значение field1, будет отображаться Слишком высоко! в field2 , и если оно слишком низкое, в этом же текстовом поле будет отображаться Too low! * .Если это правильный номер, на дисплее отобразится Правильный номер!Поздравляем! в field2 .Пока что возникает проблема, когда field2 ничего не отображает, и я подозреваю, что btnNewGame не работает так же хорошо.Кто-нибудь может мне помочь в этом вопросе?Заранее большое спасибо, и извините, если об этом спросили раньше!

import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class page339_4 extends JFrame {

int randomNumber = new Random().nextInt(100) + 1; // New game initiator

public page339_4(){
    setTitle("Number Guesser");
    setSize(400, 200);
    setLayout(new BorderLayout(1,0));


    JPanel panel1 = new JPanel();
    JLabel label = new JLabel("Guess a number here :");
    JTextField field1 = new JTextField(10);
    panel1.add(label);
    panel1.add(field1);

    JPanel panel2 = new JPanel();
    JTextField field2 = new JTextField();
    field2.addActionListener(f2->{
        String playerGuess = field1.getText();
        int guess = Integer.parseInt(playerGuess);
        if (guess > randomNumber) {field2.setText("Too big!"); field2.setBackground(Color.CYAN);}
        else if (guess < randomNumber) {field2.setText("Too low!"); field2.setBackground(Color.RED);}
        else {field2.setText("Congratulations! Right Number!"); field2.setBackground(Color.GREEN);}
    });
    panel2.add(field2);

    JPanel panel3 = new JPanel();
    JButton btnNewGame = new JButton("New Game");
    btnNewGame.addActionListener(e->{
        int randomNumber = new Random().nextInt(100) + 1;
        field2.setText("");
    });
    panel3.add(btnNewGame);
    JButton btnExit = new JButton("Close");
    btnExit.addActionListener(e->{
        System.exit(0);
    });
    panel3.add(btnExit);

    add(panel1, BorderLayout.NORTH);
    add(panel2, BorderLayout.CENTER);
    add(panel3, BorderLayout.SOUTH);
    pack();
    setLocationRelativeTo(null);
    setVisible(true);
}

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Я думаю, вам нужно добавить слушателя в первое поле, а не во второе.Поэтому измените эту строку

field2.addActionListener (f2 -> {...});

на

field1.addActionListener (f2 -> {...});

0 голосов
/ 11 декабря 2018

Если они вводят числа в поле1, вы должны добавить ActionListener в поле1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...