课前问题列表
1.运行预习课件"GUI-1"中的登录框界面,并尝试在"用户名"对应的文本框(JTextField)中,输入自己的昵称。并截图上传。

2.查看https://www.cnblogs.com/zhrb/p/8978560.html中的GuessGame代码。完成如下任务:
- 将Guess游戏改为图形界面。即,编写一个GUIGame继承GuessGame,但里面对输入输出的处理采用对话框。
- 以GuessGame的两种版本(控制台、图形界面)为例,简述这里使用抽象类的好处。
- 图形界面对话框参考资料:
https://www.cnblogs.com/jiangxiulian/p/5961990.html
不太会写,参考了网上关于猜数字的相关代码,但是此处并没有涉及到继承
package guessnumber;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class GuessNumFrame extends JFrame {
private JPanel contentPane;
private int num;
private final JTextField jtfInput;
private final JLabel label;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuessNumFrame frame = new GuessNumFrame();
frame.setVisible(true);// 窗口可见
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public GuessNumFrame() {
setTitle("猜数字");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(360, 160);// 窗口大小
setLocationRelativeTo(null);// 居中
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel_1 = new JPanel();
contentPane.add(panel_1, BorderLayout.CENTER);
panel_1.setLayout(new GridLayout(3, 1, 0, 0));
JPanel panel = new JPanel();
panel_1.add(panel);
JButton jbNum = new JButton("得到一个随机数");
panel.add(jbNum);
JPanel panel_2 = new JPanel();
panel_1.add(panel_2);
label = new JLabel("");
label.setOpaque(true);
label.setBackground(Color.CYAN);
panel_2.add(label);
JPanel panel_3 = new JPanel();
panel_1.add(panel_3);
jtfInput = new JTextField();
panel_3.add(jtfInput);
jtfInput.setColumns(10);
JButton jbOk = new JButton("确定");
panel_3.add(jbOk);
jbNum.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
num = (int) (Math.random() * 10);// 生成随即数
label.setText("随机数已经生成范围0~9");
System.out.println(num);
}
});
jbOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int x;
try {
x = Integer.parseInt(jtfInput.getText());// 取得输入框的数字 进行比较
} catch (Exception e1) {
JOptionPane.showMessageDialog(null, "sorry,输入错误!");
return;
}
if (x == num) {
JOptionPane.showMessageDialog(null, "厉害,猜对了~!");
} else if (x < num) {
JOptionPane.showMessageDialog(null, "你猜小了", "提示", JOptionPane.WARNING_MESSAGE);
} else if (x > num) {
JOptionPane.showMessageDialog(null, "你猜大了", "提示", JOptionPane.WARNING_MESSAGE);
}
}
});
}
}
测试:


- 关于抽象类的好处:
因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。
当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。
这篇博客介绍如何将控制台版的GuessGame转化为图形界面应用。通过创建一个名为GUIGame的类,利用Java Swing库实现交互式的对话框。用户可以输入猜测的数字并与系统生成的随机数进行比较。文章还探讨了使用抽象类在代码组织和维护上的优势。
928

被折叠的 条评论
为什么被折叠?



