编写应用GUI组件的程序,完成猜数游戏:程序随机产生一个数,用户输入猜数,程序每次给出大或小的提示,最多猜十次。
输出示例可参考:
代码实现:
package test;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Guessnumber extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
int rand_num;
int count = 0;
int max = 100;
int min = 0;
JTextArea textarea = new JTextArea(5,60);
JTextField text;
JButton button;
JPanel p2 = new JPanel(new FlowLayout());
public Guessnumber(){
Container container = this.getContentPane(); // 设置总的容器
rand_num = (int)(Math.random()*100) + 1;
setTitle("猜数字");
container.setLayout(new BorderLayout());
setSize(100,200);
setLocation(400,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane p1 = new JScrollPane(textarea); // 设置文本域
p1.setSize(200,400);
p2.setPreferredSize(new Dimension(50,50)); // 设置标签
p2.add(new JLabel("请输入想猜数字:"),FlowLayout.LEFT);
text = new JTextField(35); // 设置输入框
text.setSize(1,53);
text.setLocation(100,50);
p2.add(text,FlowLayout.CENTER);
button = new JButton("猜一猜"); // 设置按钮
button.setSize(3,3);
p2.add(button,FlowLayout.RIGHT);
button.addActionListener(this);
container.add(p1,BorderLayout.NORTH);
container.add(p2,BorderLayout.SOUTH);
pack();
}
public static void main(String[] args){
new Guessnumber();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("猜一猜")){
if(count < 10){
count++;
int guess = Integer.parseInt(text.getText());
if(guess > rand_num){
max = guess;
textarea.setText(textarea.getText() + "\n第" + count + "次猜的" + guess + "猜大了,在[" + min +"," + max + "]中猜一个数字");
}else if(guess < rand_num){
min = guess;
textarea.setText(textarea.getText() + "\n第" + count + "次猜的" + guess + "猜小了,在[" + min +"," + max + "]中猜一个数字");
}else if(guess == rand_num){
textarea.setText(textarea.getText() + "\n恭喜你!第" + count + "次猜的" + guess + "猜对了!");
}
}else{
textarea.setText(textarea.getText() + "\n已经10次了,没有机会了!");
}
}
text.setText("");
}
}
结果展示:
分析:
1.main函数中最好只写函数的调用。
2.这个界面用到了awt和swing。
3.主类要继承JFrame类,引用ActionListener接口。
4.在主类的构造函数中,要设置总的容器(container),设置文本域(textarea)用来在窗口查看输出的提示等,要设置标签(label)提示输入的内容,要设置输入框(JTextField)来得到输入的内容,要设置按钮(button)来执行相应操作,最后把相关组件添加到容器中。
5.在重写的actionPerformed方法中,写猜数字的具体的代码。
6.猜数字具体的代码需要注意:(1)判断猜数字猜的次数 (2)得出结果后,要在文本域中添加内容,使之能显示出来,同时也要获取之前文本域的内容,与新的内容一起显示 (3)在输出内容后,要把输入框内的内容清除,方便下次继续输入。
在这里推荐一个b站讲gui的视频教程:https://www.bilibili.com/video/BV1DJ411B75F?from=search&seid=18164031753067872366&spm_id_from=333.337.0.0