Java GUI编程小练习——猜数字游戏

一、GUI基础

GUI全称Graphical User Interface,即图形用户界面,是指采用图形方式显示计算机操作界面的应用程序。

Java中的GUI开发采用的是Swing组件库,Swing是一种跨平台的图形用户界面(GUI)工具包,它是在Java SE的基础上开发的。

在Java中,我们可以通过继承JFrame类或者使用JFrame对象来创建一个窗口。

二、实现一个简单的猜数字游戏

接下来,我们将使用Java Swing组件库,实现一个简单的猜数字游戏。

首先,我们需要创建一个Java项目,并在项目中创建两个类,一个类用于实现GUI界面,一个类用于实现猜数字的逻辑。

  • LoginUI类

LoginUI类用于实现GUI界面,代码如下:

import java.awt.*;
import javax.swing.*;

public class LoginUI{

  // 初始化UI界面的方法
  public void initUI(){
    JFrame jf = new JFrame ();
    jf.setTitle ("登录界面");
    jf.setSize (500, 400);
    jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    FlowLayout flow = new FlowLayout ();
    jf.setLayout (flow);

    JTextField in = new JTextField ();
    JTextField out = new JTextField ();
    JButton btn = new JButton ("确定");

    // 设置输入框的尺寸
    Dimension dim = new Dimension (180, 60);
    in.setPreferredSize (dim);
    out.setPreferredSize (dim);

    // 限制out输入框不能输入字符
    out.setEnabled (false);

    // 将组件添加到窗体上
    jf.add (in);
    jf.add (btn);
    jf.add (out);

    jf.setVisible (true);

    // btnl 看作自己实现的监听器
    BtnListen btnl = new BtnListen ();
    // 按钮与这个监听器绑定
    btn.addActionListener (btnl);

    // 将界面上的输入框对象 传给监听器对象 方便按钮被点击之后调用的方法中 使用 输入框不出错
    btnl.in2 = in;
    btnl.out2 = out;
  }

  // 程序入口
  public static void main(String[] args){
    LoginUI loginUI = new LoginUI ();
    loginUI.initUI ();
  }
}

上述代码中,我们创建了一个LoginUI类,该类中有一个initUI()方法用于初始化GUI界面。

在initUI()方法中,我们首先创建了一个JFrame对象,设置了该对象的一些属性,比如标题、大小等。

然后,我们使用FlowLayout布局管理器,将三个组件(一个输入框、一个按钮和一个输出框)添加到了JFrame对象上,并设置了输入框和输出框的尺寸

  • 编写按钮监听器

接下来,我们创建了一个BtnListen对象,并将其绑定到按钮上:

// btnl 看作自己实现的监听器
BtnListen btnl = new BtnListen();
// 按钮与这个监听器绑定
btn.addActionListener(btnl);
// 将界面上的输入框对象传给监听器对象方便调用
btnl.in2 = in;
btnl.out2 = out;

在创建BtnListen对象后,我们将其绑定到按钮上,使按钮与监听器建立关联。当用户点击按钮时,按钮会向绑定的监听器发送事件,监听器会执行actionPerformed(ActionEvent e)方法中的逻辑。

actionPerformed方法中,首先判断是否已经初始化num的值,如果没有,则调用Random类生成0-100之间的随机整数作为num的值。

接着,通过in2.getText()方法获取输入框中的文本内容,并进行长度和是否全为数字的合法性检查。如果不合法,将输出框中的文本设置为相应的错误提示,并使用return语句退出方法。

如果输入的值合法,则通过Integer.parseInt方法将文本内容转换成整数,与生成的num值进行比较。如果相等,则将输出框中的文本设置为"炸弹爆炸了 已重置炸弹~",并将numminmax的值重置为0、0和100。此外,将输入框中的文本设置为"请继续输入您要猜的数"。

如果输入的值不等于num,则根据大小关系更新minmax的值,并将输出框中的文本设置为"没有猜到炸弹"加上minmax的值。

最后,BtnListen类实现了ActionListener接口,将输入框和输出框的对象传递给BtnListen对象,并将按钮与BtnListen对象绑定。这样,当按钮被点击时,actionPerformed方法将被调用,完成相应的操作。

public class BtnListen implements ActionListener{

	JTextField in2;
	JTextField out2;

	int num = 0;
	Random ran = new Random ();
	int max = 100;
	int min = 0;


	// 子类直接写一个与父类一模一样的方法 相当于是重构方法
	public void actionPerformed(ActionEvent e){
		System.out.println ("按钮被点击了");
		if(num == 0){
			// 初始化num 随机0-100之间的数
			num = ran.nextInt (100) + 1;// (0-99)
		}
		// 输入框获取文本
		String inText = in2.getText ();
		// ASCII码 数字 符号 StString 字母 控制符(0~127)
		if(inText.length () > 2){
			out2.setText ("输入长度不合法~");
			return;
		}
		for(int i = 0; i < inText.length (); i++){
			char c1 = inText.charAt (i);
			if(c1 < '0' || c1 > '9'){
				out2.setText ("输入字符带有非数字~");
				return;
			}
		}

		// 将文本转为数值
		int inNum = Integer.parseInt (inText);
		if(inNum >= max || inNum <= min){
			out2.setText ("请输入正确范围内的数值:" + min + "~" + max);
			return;
		}

		if(inNum == num){
			out2.setText ("炸弹爆炸了 已重置炸弹~");
			num = 0;
			min = 0;
			max = 100;
			in2.setText ("请继续输入您要猜的数");
		} else{
			if(inNum > num){
				max = inNum;
			} else if(inNum < num){
				min = inNum;
			}
			out2.setText ("没有猜到炸弹" + min + "~" + max);
		}


	}
}

 

 

你可能感兴趣的:(java,游戏,jvm)