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轻松学》这本书将各个知识点放在一个小项目中,通过一步步完善这个项目,让人很有成就感。
本人实在是不擅长写文章,希望在一篇篇文章中有所进步。