A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小丑 高级黑马   /  2015-7-13 16:03  /  610 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package me.zhouyou.gui;

  2. import java.awt.Button;
  3. import java.awt.FlowLayout;
  4. import java.awt.Frame;
  5. import java.awt.TextField;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.event.MouseAdapter;
  9. import java.awt.event.MouseEvent;
  10. import java.awt.event.WindowAdapter;
  11. import java.awt.event.WindowEvent;

  12. import javax.swing.JOptionPane;

  13. public class GuessFigureGame {

  14.         private static int randomNumber = getRandom();
  15.         private static Frame f;
  16.         private static TextField tf;
  17.         private static Button bu;

  18.         public static void main(String[] args) {
  19.                 // 创建窗体对象
  20.                 f = new Frame("猜数字小游戏");
  21.                 // 设置窗体属性
  22.                 f.setSize(300, 200);
  23.                 f.setLayout(new FlowLayout());
  24.                 // 居中窗体
  25.                 UiUtil.setFrameCenter(f);

  26.                 // 创建按钮对象
  27.                 bu = new Button("我猜");
  28.                 // 设置按钮属性
  29.                 bu.setSize(20, 20);

  30.                 // 创建文本框对象
  31.                 tf = new TextField("请输入一个猜的数(1-100)", 20);

  32.                 // 添加组件
  33.                 f.add(tf);
  34.                 f.add(bu);

  35.                 // 事件监听-->关闭窗体
  36.                 f.addWindowListener(new WindowAdapter() {
  37.                         @Override
  38.                         public void windowClosing(WindowEvent e) {
  39.                                 System.exit(0);
  40.                         }
  41.                 });
  42.                 // 事件监听-->点击文本框
  43.                 tf.addMouseListener(new MouseAdapter() {
  44.                         @Override
  45.                         public void mouseClicked(MouseEvent e) {
  46.                                 tf.setText("");
  47.                         }
  48.                 });
  49.                 // 事件监听-->点击按钮
  50.                 bu.addActionListener(new ActionListener() {
  51.                         @Override
  52.                         public void actionPerformed(ActionEvent e) {
  53.                                 // 判断输入否是是数字
  54.                                 String number = tf.getText();
  55.                                 String regex = "\\d+";
  56.                                 if (!number.matches(regex)) {
  57.                                         JOptionPane.showMessageDialog(f, "输入有误,请重新输入");
  58.                                         // 获取光标
  59.                                         tf.requestFocus();
  60.                                         // 清空文本框
  61.                                         tf.setText("");
  62.                                         return;
  63.                                 }
  64.                                 // 转换为int类型
  65.                                 int guessNumber = Integer.parseInt(number);
  66.                                 if (guessNumber < 1 || guessNumber > 100) {
  67.                                         JOptionPane.showMessageDialog(f, guessNumber
  68.                                                         + "不在1-100范围内,请重新输入");
  69.                                         // 获取光标
  70.                                         tf.requestFocus();
  71.                                         // 清空文本框
  72.                                         tf.setText("");
  73.                                         return;
  74.                                 }
  75.                                 // 调用猜数字游戏
  76.                                 Game_GuessFigure(guessNumber);

  77.                         }

  78.                 });
  79.                 // 显示窗体
  80.                 f.setVisible(true);

  81.         }

  82.         private static void Game_GuessFigure(int guessNumber) {
  83.                 if (guessNumber > randomNumber) {
  84.                         JOptionPane.showMessageDialog(f, "输入的" + guessNumber + "大了");
  85.                         tf.requestFocus();
  86.                         tf.setText("");
  87.                 } else if (guessNumber < randomNumber) {
  88.                         JOptionPane.showMessageDialog(f, "输入的" + guessNumber + "小了");
  89.                         tf.requestFocus();
  90.                         tf.setText("");
  91.                 } else {
  92.                         JOptionPane.showMessageDialog(f, "恭喜你,猜中了!");
  93.                         tf.requestFocus();
  94.                         tf.setText("请输入一个猜的数(1-100)");
  95.                         // 询问用户是否继续
  96.                         int select = JOptionPane.showConfirmDialog(f, "还要继续玩吗?");
  97.                         // 如果选择yes
  98.                         if (select == 0) {
  99.                                 // 重置随机数
  100.                                 randomNumber = getRandom();
  101.                         } else {
  102.                                 System.exit(0);
  103.                         }
  104.                 }
  105.         }

  106.         // 获取随机数
  107.         private static int getRandom() {
  108.                 return (int) (Math.random() * 100) + 1;
  109.         }

  110. }
复制代码


1 个回复

倒序浏览
  1. package me.zhouyou.gui;

  2. import java.awt.Dimension;
  3. import java.awt.Frame;
  4. import java.awt.Toolkit;

  5. /**
  6. * 针对界面进行操作提供的工具类
  7. * @author kongqi
  8. *
  9. */
  10. public class UiUtil {
  11.         /**
  12.          * 需求:设置窗体居中。
  13.          *
  14.          * 分析:
  15.          *                 A:获取屏幕的宽和高。
  16.          *                 B:获取被设置窗体的宽和高。
  17.          *                 C:(屏幕的宽-窗体的宽)/2 ,(屏幕的高-宽体的高)/2
  18.          *                 D:作为新坐标。
  19.          */
  20.         public static void setFrameCenter(Frame f){
  21.                 // 获取工具包对象
  22.                 Toolkit t = Toolkit.getDefaultToolkit();
  23.                 // 获取屏幕对象
  24.                 Dimension d = t.getScreenSize();
  25.                 // 获取屏幕的宽
  26.                 double screenWidth = d.getWidth();
  27.                 // 获取屏幕的高
  28.                 double screenHeight = d.getHeight();
  29.                
  30.                 // 获取窗体的宽
  31.                 int jfWidth = f.getWidth();
  32.                 // 获取窗体的高
  33.                 int jfHeight = f.getHeight();
  34.                
  35.                 // 获取新坐标
  36.                 int width = (int)(screenWidth-jfWidth)/2;
  37.                 int height = (int)(screenHeight-jfHeight)/2;
  38.                
  39.                 // 设置新坐标
  40.                 f.setLocation(width, height);
  41.                
  42.         }
  43.        
  44.        
  45.        
  46.        
  47.        
  48.        
  49.        
  50.        
  51. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马