import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class GuessNumber
extends JFrame {
JTextField numberDisplay;
JTextArea reasultDisplay;
JButton button0;
JButton btnOk;
JButton btnHelp;
JButton btnclear;
int[] gessArray;
int[] rndNumber;
String sstr;
String reasultStr;
int aNum, bNum;
int n;
public GuessNumber() {
createComponents();
layoutComponents();
setTitle("简单猜数字游戏");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,150);
this.setVisible(true);
createRandom();
registerEventHander();
}
private void createComponents() {
numberDisplay = new JTextField(4);
reasultDisplay = new JTextArea();
btnOk = new JButton("OK");
btnHelp = new JButton("?");
btnclear = new JButton("clear");
reasultStr = new String("");
n = 0;
}
private void layoutComponents() {
Container contentPane = this.getContentPane();
contentPane.setLayout(new GridLayout(3, 1));
//
JScrollPane scrollPane = new JScrollPane(reasultDisplay);
//
JPanel BtnDis = new JPanel();
BtnDis.add(btnHelp);
BtnDis.add(numberDisplay);
//
JPanel ButtonPane4 = new JPanel();
ButtonPane4.add(btnOk);
ButtonPane4.add(btnclear);
//
contentPane.add(scrollPane);
contentPane.add(BtnDis);
contentPane.add(ButtonPane4);
}
private class btnNumberActionEventHander
implements ActionListener {
boolean ClearDisplay;
int i = 0;
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
if (ClearDisplay) {
numberDisplay.setText("");
ClearDisplay = false;
}
numberDisplay.setText(numberDisplay.getText() + btn.getText());
String cc = numberDisplay.getText();
i = cc.length();
if (i > 4) {
ClearDisplay = true;
numberDisplay.setText("");
}
}
}
private class btnclearActionEventHander
implements ActionListener {
public void actionPerformed(ActionEvent e) {
numberDisplay.setText("");
}
}
private class btnOkActionEventHander
implements ActionListener {
public void actionPerformed(ActionEvent e) {
aNum = 0;
bNum = 0;
String str = new String(numberDisplay.getText());
int userGess = Integer.parseInt(str);
gessArray = new int[4];
n++;
for (int i = 3; i >= 0; i--) {
gessArray[i] = userGess % 10;
userGess /= 10;
}
for (int i = 0; i <= 3; i++) {
for (int j = 0; j <= 3; j++) {
if (i == j) {
if (gessArray[i] == rndNumber[j]) {
aNum++;
}
}
else {
if (gessArray[i] == rndNumber[j]) {
bNum++;
}
}
}
private void registerEventHander() {
btnNumberActionEventHander number = new btnNumberActionEventHander();
btnclearActionEventHander clear = new btnclearActionEventHander();
btnclear.addActionListener(clear);
btnOkActionEventHander ok = new btnOkActionEventHander();
btnOk.addActionListener(ok);
btnHelpActionEventHander help = new btnHelpActionEventHander();
btnHelp.addActionListener(help);
}
private void createRandom() {
rndNumber = new int[4];
Set s = new HashSet();
Random random = new Random();
while (s.size() < 4) {
Integer i = new Integer(random.nextInt(10));
String x = i.toString();
if (!s.contains(x)) {
s.add(x);
}
// System.out.println(s.toString());
}
Iterator t = s.iterator();
int ii = 0;
while (t.hasNext() && ii <= 3) {
String x = (String) (t.next());