这是一个猜数字的游戏。用户输入 1~1000 以内的任意数字,程序给出它是大了还是小了,直到猜出正确的结果。
- import javax.swing.*;
- import java.awt.BorderLayout;
- import java.awt.event.ActionListener;
- import java.awt.event.ActionEvent;
- import java.util.Random;
- /**
- * 猜数字
- */
- public class GuessNumber extends JFrame {
- private Random r = new Random();
- private int result = r.nextInt(1000) + 1;
- private int counter = 0;
- private boolean finished = false;
- private GuessNumber thisFrame = this;
- private ActionListener guessButtonListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (!finished) {
- String user_guess = textbox.getText();
- if (user_guess.length() == 0) {
- messageLabel.setText("输入文本不能为空。");
- } else {
- try {
- int guess = Integer.parseInt(user_guess);
- counter++;
- if (guess < result) {
- messageLabel.setText("你输入的数字 " + guess + " 比结果小。");
- } else if (guess > result) {
- messageLabel.setText("你输入的数字 " + guess + " 比结果大。");
- } else {
- finished = true;
- messageLabel.setText("OK,经过" + counter + "次猜测,你终于猜中了。");
- button.setText("再来一次");
- }
- } catch (NumberFormatException e1) {
- messageLabel.setText("请输入数字。");
- }
- }
- } else {
- result = r.nextInt(1000) + 1;
- counter = 0;
- finished = false;
- messageLabel.setText("请输入一个 1~1000 之内的数字。");
- button.setText("猜一猜");
- thisFrame.setTitle(String.valueOf(result));
- }
- }
- };
- private JTextField textbox = new JTextField();
- private JLabel messageLabel = new JLabel("请输入一个 1~1000 之内的数字。");
- private JButton button = new JButton("猜一猜");
- public static void main(String[] args) {
- GuessNumber frame = new GuessNumber();
- frame.setVisible(true);
- }
- public GuessNumber() {
- super("猜数字");
- this.setDefaultCloseOperation(EXIT_ON_CLOSE);
- this.setSize(400, 200);
- this.setLocation(200, 200);
- this.setResizable(false);
- setupContentPane();
- setupControls();
- this.setTitle(String.valueOf(result));
- }
- private void setupContentPane() {
- JPanel contentPane = new JPanel(new BorderLayout());
- contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
- this.setContentPane(contentPane);
- }
- private void setupControls() {
- JPanel topPanel = new JPanel(new BorderLayout());
- setupTupPanel(topPanel);
- this.add(topPanel, BorderLayout.NORTH);
- this.add(messageLabel, BorderLayout.CENTER);
- }
- private void setupTupPanel(JPanel panel) {
- panel.add(textbox, BorderLayout.CENTER);
- button.addActionListener(guessButtonListener);
- panel.add(button, BorderLayout.EAST);
- }
- }