这是一个猜数字的游戏。用户输入 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);
}
}