Java学习—猜数游戏GUI版

这篇博客介绍了如何使用Java Swing库创建一个GUI猜数游戏。游戏界面包含文本输入框、按钮和输出标签,用户输入整数并点击按钮或按回车进行猜测。程序会根据用户输入提供反馈,如过高、过低或正确,并在获胜后自动开始新游戏。博客作者通过阅读《Java轻松学》来复习和学习Java,并分享了GUI编程的部分。
摘要由CSDN通过智能技术生成

Java学习—猜数游戏GUI版

题目描述

猜数游戏GUI版将猜数游戏利用页面展示,创建了一个界面,功能基本与非GUI版相同,在用户输入数字后,光标能够自动选中输入的数字,下次输入不用手动删除,可以直接输入,输入后可以点击“Guess!”,也可以点解回车输入。
如果用户输入了不符合规范的文本,会提示用户输入正确的文本。

代码

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;
public class GuessingGame extends JFrame{
	private JTextField txtGuess;//为了使类的任何地方都能访问
	private JLabel lblOutput;
	private int theNumber;
	public void checkGuess()
	{
		String guessText=txtGuess.getText();//获得用户的输入
		String message="";
		try {
		int guess=Integer.parseInt(guessText);
		if(guess<theNumber)
		{
			message=guess+"is too low.Try again.";
		}
		else if(guess>theNumber)
		{
			message=guess+"is too high.Try again.";
		}
		else
		{
			message=guess+"is correct.You win!Let's play again";
			newGame();//获胜后自动开始新的游戏
		}
		}
		catch(Exception e)
		{
			message="Enter a whole number between 1 and 100";
		}
		finally
		{
			lblOutput.setText(message);
			txtGuess.requestFocus();//用户每次猜测后,都将光标放回到文本框中
			txtGuess.selectAll();//选择文本框中所有文本
		}

	}
	public void newGame()
	{
		theNumber=(int)(Math.random()*100+1);
	}
	public GuessingGame() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("My Hi-Lo Guessing Game");
		getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("My Hi-Lo Guessing Game");
		lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 16));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(29, 61, 681, 31);
		getContentPane().add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("Guess a number between 1 and 100:");
		lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 14));
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(116, 153, 332, 49);
		getContentPane().add(lblNewLabel_1);
		
		txtGuess = new JTextField();
		txtGuess.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				checkGuess();
			}
		});
		txtGuess.setBounds(473, 169, 66, 21);
		getContentPane().add(txtGuess);
		txtGuess.setColumns(10);
		
		JButton btnNewButton = new JButton("Guess!");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				checkGuess();
			}
		});
		btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16));
		btnNewButton.setBounds(321, 249, 97, 42);
		getContentPane().add(btnNewButton);
		
		lblOutput = new JLabel("Enter a number above and click Guess!");
		lblOutput.setHorizontalAlignment(SwingConstants.CENTER);
		lblOutput.setFont(new Font("楷体", Font.PLAIN, 18));
		lblOutput.setBounds(167, 366, 406, 21);
		getContentPane().add(lblOutput);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GuessingGame theGame=new GuessingGame();
		theGame.newGame();
		theGame.setSize(new Dimension(700,550));
		theGame.setVisible(true);

	}
}

声明

本系列文章是关于我对于《Java轻松学》这本书的学习的记录,并不是教学的文章,所以可能很多地方表述不清楚,欢迎大家一起交流探讨。
我是之前学过Java,之所以来读这本书,是因为看到书中GUI部分以及其它部分老师并没有讲述,但是看上去很有意思,值得一学,并通过阅读对于Java的知识进行复习回顾。《Java轻松学》这本书将各个知识点放在一个小项目中,通过一步步完善这个项目,让人很有成就感。
本人实在是不擅长写文章,希望在一篇篇文章中有所进步。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值