黑马程序员技术交流社区
标题:
GUI小程序:猜数字小游戏
[打印本页]
作者:
小丑
时间:
2015-7-13 16:03
标题:
GUI小程序:猜数字小游戏
package me.zhouyou.gui;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;
public class GuessFigureGame {
private static int randomNumber = getRandom();
private static Frame f;
private static TextField tf;
private static Button bu;
public static void main(String[] args) {
// 创建窗体对象
f = new Frame("猜数字小游戏");
// 设置窗体属性
f.setSize(300, 200);
f.setLayout(new FlowLayout());
// 居中窗体
UiUtil.setFrameCenter(f);
// 创建按钮对象
bu = new Button("我猜");
// 设置按钮属性
bu.setSize(20, 20);
// 创建文本框对象
tf = new TextField("请输入一个猜的数(1-100)", 20);
// 添加组件
f.add(tf);
f.add(bu);
// 事件监听-->关闭窗体
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 事件监听-->点击文本框
tf.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
tf.setText("");
}
});
// 事件监听-->点击按钮
bu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 判断输入否是是数字
String number = tf.getText();
String regex = "\\d+";
if (!number.matches(regex)) {
JOptionPane.showMessageDialog(f, "输入有误,请重新输入");
// 获取光标
tf.requestFocus();
// 清空文本框
tf.setText("");
return;
}
// 转换为int类型
int guessNumber = Integer.parseInt(number);
if (guessNumber < 1 || guessNumber > 100) {
JOptionPane.showMessageDialog(f, guessNumber
+ "不在1-100范围内,请重新输入");
// 获取光标
tf.requestFocus();
// 清空文本框
tf.setText("");
return;
}
// 调用猜数字游戏
Game_GuessFigure(guessNumber);
}
});
// 显示窗体
f.setVisible(true);
}
private static void Game_GuessFigure(int guessNumber) {
if (guessNumber > randomNumber) {
JOptionPane.showMessageDialog(f, "输入的" + guessNumber + "大了");
tf.requestFocus();
tf.setText("");
} else if (guessNumber < randomNumber) {
JOptionPane.showMessageDialog(f, "输入的" + guessNumber + "小了");
tf.requestFocus();
tf.setText("");
} else {
JOptionPane.showMessageDialog(f, "恭喜你,猜中了!");
tf.requestFocus();
tf.setText("请输入一个猜的数(1-100)");
// 询问用户是否继续
int select = JOptionPane.showConfirmDialog(f, "还要继续玩吗?");
// 如果选择yes
if (select == 0) {
// 重置随机数
randomNumber = getRandom();
} else {
System.exit(0);
}
}
}
// 获取随机数
private static int getRandom() {
return (int) (Math.random() * 100) + 1;
}
}
复制代码
作者:
小丑
时间:
2015-7-13 16:06
package me.zhouyou.gui;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Toolkit;
/**
* 针对界面进行操作提供的工具类
* @author kongqi
*
*/
public class UiUtil {
/**
* 需求:设置窗体居中。
*
* 分析:
* A:获取屏幕的宽和高。
* B:获取被设置窗体的宽和高。
* C:(屏幕的宽-窗体的宽)/2 ,(屏幕的高-宽体的高)/2
* D:作为新坐标。
*/
public static void setFrameCenter(Frame f){
// 获取工具包对象
Toolkit t = Toolkit.getDefaultToolkit();
// 获取屏幕对象
Dimension d = t.getScreenSize();
// 获取屏幕的宽
double screenWidth = d.getWidth();
// 获取屏幕的高
double screenHeight = d.getHeight();
// 获取窗体的宽
int jfWidth = f.getWidth();
// 获取窗体的高
int jfHeight = f.getHeight();
// 获取新坐标
int width = (int)(screenWidth-jfWidth)/2;
int height = (int)(screenHeight-jfHeight)/2;
// 设置新坐标
f.setLocation(width, height);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2