1.源码
package chapter02BAC.GUI;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;
@SuppressWarnings("serial")
public class BullACGUI extends JFrame{
private JTextField text;
private JButton Bu, btnNewButton;
private JLabel JLoutput;
private int theNumber;
Integer numberOf = 0;
public void checkGuess() {
String guessText = text.getText();
String message = "";
// 将用户输入的字符串转换成数字
try {
numberOf += 1;
int guess = Integer.parseInt(guessText);
if(guess < theNumber)
message = guess + "输入数字小了,再试试:";
else if (guess > theNumber)
message = guess + "输入数字大了,再试试:";
else {
message = guess + "恭喜您猜中了!再来一次吧!你一共猜了"+numberOf+"次";
// newGame();
btnNewButton.setVisible(true);
}
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
message ="请输入1-100之间地数字";
}finally {
JLoutput.setText(message);
//该方法让当前组件获取输入焦点(光标)
text.requestFocus();
//选中文本框的所有文本清空
text.selectAll();
}
}
// 随机数方法
public void newGame() {
theNumber = (int)(Math.random() * 100 + 1);
}
public BullACGUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("jiyu - 猜数游戏");
getContentPane().setLayout(null);
JLabel gamename = new JLabel("jiyu -猜数游戏");
gamename.setForeground(new Color(255, 0, 0));
gamename.setFont(new Font("宋体", Font.BOLD, 20));
gamename.setHorizontalAlignment(SwingConstants.CENTER);
gamename.setBounds(10, 10, 414, 38);
getContentPane().add(gamename);
JLabel jftype = new JLabel("请输入1-100之间的一个数:");
jftype.setFont(new Font("宋体", Font.PLAIN, 16));
jftype.setHorizontalAlignment(SwingConstants.RIGHT);
jftype.setBounds(38, 73, 218, 45);
getContentPane().add(jftype);
text = new JTextField();
text.setFont(new Font("宋体", Font.PLAIN, 16));
// 添加操作监控器
text.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.setBounds(269, 79, 76, 33);
getContentPane().add(text);
text.setColumns(10);
Bu = new JButton("提交");
Bu.setBackground(new Color(255, 255, 255));
Bu.setForeground(new Color(0, 0, 0));
Bu.setFont(new Font("宋体", Font.PLAIN, 22));
Bu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
checkGuess();
}
});
Bu.setBounds(167, 134, 100, 38);
getContentPane().add(Bu);
JLoutput = new JLabel("输入一个数,点击提交");
JLoutput.setForeground(new Color(255, 128, 128));
JLoutput.setHorizontalAlignment(SwingConstants.CENTER);
JLoutput.setFont(new Font("宋体", Font.PLAIN, 12));
JLoutput.setBounds(0, 182, 434, 15);
getContentPane().add(JLoutput);
btnNewButton = new JButton("再来一次!");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newGame();
btnNewButton.setVisible(false);
}
});
btnNewButton.setVisible(false);
btnNewButton.setBounds(167, 217, 93, 23);
getContentPane().add(btnNewButton);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
BullACGUI name = new BullACGUI();
name.newGame();
name.setSize(new Dimension(450,300));
name.setVisible(true);
}
}
2.结果
3.关于本次实验出现的错误在:
问题记录栏目-(已解决)求教,简单的猜数游戏,调用Jbutton一直显示为空