猜数字小游戏
不废话想看看效果吧!
当我们答对后就会出现:
如果你实在急着想知道答案:
简要说明:
- 所猜测的数字为1~1000;
- 只能通过按确定输出答案,未设置Enter键直接输入的监控。
- 退出请直接点击叉叉无另外设置退出键。
代码段(许多解释已有注释)
设置一个类产生随机数,并可以通过其中的方法取得该随机数;
package GUI;
import java.util.Random;
public class numberMannerge {
private int rnum = 0;
Random r = new Random();
public void setNumber() {
this.rnum = r.nextInt(999) + 1;
}
public int getNumber() {
return this.rnum;
}
}
未直接通过继承JFrame类来实现,大家可以试试用继承JFrame类来实现,这样比较方便。
package GUI;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.xml.ws.handler.MessageContext.Scope;
public class text_gui {
private static void createAndShowGui() {
int j = 0;//猜测的次数
//创建一个用于生成数据获得数据的对象。
numberMannerge manners = new numberMannerge();
manners.setNumber();//设置一个随机数。
JFrame f = new JFrame("猜数字小游戏");
f.setLayout(new BorderLayout());//设置页面布局。
f.setSize(600, 300);//GUI大小设置
f.setLocation(300, 200);//GUI出现在屏幕的位置。
//创建文本域showArea用来显示文本,并且指定其行列的大小。
JTextArea showArea = new JTextArea(12,13);
//创建JscrollPane滚动面板,滚动条策略:只有文本超出面板才会出现滚动条
JScrollPane scrollpane = new JScrollPane(showArea);
showArea.setEditable(false);//设置文本域不可编辑
//设置文本框用于写入猜测的数字。
JTextField inpuField = new JTextField(20);
JLabel label = new JLabel("猜测数字");//标签
JButton btn1 = new JButton("确定");
JButton btn2 = new JButton("想看答案");
btn2.addActionListener(e->{
showArea.setText("");//将文本域内容清空。
showArea.append("答案是:"+manners.getNumber()+"\n再来一次吧!\n");
manners.setNumber();//设置一个新的随机数。
});
//运用匿名方法设置btn1的监控。
btn1.addActionListener(e->{
//获取玩家输入的数字。
String content = inpuField.getText();
boolean bool = true;
//检测玩家是否未输入,或仅仅输入了空格。
if(content != null&&!content.trim().equals("")) {
Integer a = Integer.valueOf(content);
int rnum = manners.getNumber();
if(a==rnum) {
//将我们要给玩家的提示输入文本域。
showArea.append("你答对啦!!!"+"\n");
bool = false;
}
else if(a < rnum) {
showArea.append("你的数"+a+"小了点,再输入一次吧!"+"\n");
}
else {
showArea.append("你的数"+a+"太大啦,再输入一次吧!"+"\n");
}
}
else {
showArea.append("输入不能为空!!!"+"\n");
}
if(!bool) {
manners.setNumber();
showArea.setText("");
showArea.append("数字发生改变,开始新的一局!\n");
}
inpuField.setText("");
});
//将标签、按钮等组件放入panel容器中。
JPanel panel = new JPanel();
panel.add(label);
panel.add(inpuField);
panel.add(btn1);
panel.add(btn2);
//将各个容器放入顶级容器中。
//并且为它们安排好在容器的位置。
f.add(scrollpane,BorderLayout.PAGE_START);
f.add(panel,BorderLayout.CENTER);
f.setVisible(true);//窗体是否可见。
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭符号。
}
public static void main(String[] args) {
//使用SwingUtilities工具类调用createAndShowGui方法执行并显示GUI程序。
SwingUtilities.invokeLater(text_gui::createAndShowGui);
}
}