基于Java事件监听编写一个中秋猜灯谜小游戏
作者:随身电源
何为事件监听
在Java中,事件监听(Event Listening)是一种处理用户交互的机制。通过事件监听,你的程序可以在用户进行某些操作(如点击按钮、输入文本、移动鼠标等)时执行特定的任务。
事件监听通常涉及三个组成部分:
- 事件源:这是产生事件的组件。例如,一个按钮、一个文本框、一个菜单等都可以是事件源。
- 事件:这是用户与事件源交互的动作。例如,点击、键入、鼠标移动等。每个事件类型都有一个对应的Java类,例如
ActionEvent
、KeyEvent
等。 - 事件监听器:这是一个特殊的类,用于处理事件。你需要创建一个实现了特定事件监听器接口的类,并覆盖其中的方法以定义当事件发生时要执行的操作。例如,如果你想要在用户点击按钮时显示一条消息,你可以创建一个实现
ActionListener
接口的类,并在actionPerformed
方法中显示消息。
事件监听的工作原理是:你将事件监听器注册到事件源上,当用户与事件源交互时,Java运行环境会自动调用相应的事件监听器处理事件。
当然了,以上是官方的一些概念,一如既往地晦涩难懂,简单点说,就是你在点击窗口中的一些操作按钮时,Java程序是如何知道你点击了它们呢?其中就用到了一些回调方法,当你点击按钮的时候,便会调用这些回调方法,此时Java程序便知道你点击了某个按钮,接下来就可以进行程序的下一步操作。
比如下面的一个程序:
public class Example { public static void main(String[] args) { JFrame frame = new JFrame("事件监听"); frame.setLocationRelativeTo(null); JButton button = new JButton("点我试试!"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "你真点啊"); } }); frame.getContentPane().add(button); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
在这个程序中,我们创建了一个窗口,并在窗口中添加了一个按钮,此时通过调用addActionListener
给按钮添加了一个点击事件,其中有回调方法actionPerformed
,当点击按钮时便会调用它,我们来试一试:
现在点击它:
这样一个点击事件的监听就完成了。
具体的执行流程如下图:
动手实现一个猜灯谜小游戏
现在我们就可以用所学知识做一个简单的猜灯谜小游戏了,首先我们设计一下窗体:
我们可以做的简单点,将题目显示在出题框里,然后点击提交按钮提交答案,此时弹出输入框,下一题可以切换题目,先把窗体画出来:
public LanternRiddlesGame() { super("猜灯谜小游戏"); // 创建标签和按钮 riddleLabel = new JLabel(riddles[currentRiddleIndex]); submitButton = new JButton("提交"); nextButton = new JButton("下一题"); // 添加按钮监听器 submitButton.addActionListener(this); nextButton.addActionListener(this); // 设置布局和组件位置大小 setLayout(new FlowLayout()); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // 居中显示 add(riddleLabel); add(submitButton); add(nextButton); setVisible(true); }
那么接下来的步骤就非常简单了,对里面的控件进行事件的监听:
@Override public void actionPerformed(ActionEvent e) { if (e.getSource() == submitButton) { // 处理提交答案逻辑 String userAnswer = JOptionPane.showInputDialog("请输入你的答案:"); if (userAnswer.equalsIgnoreCase(answers[currentRiddleIndex])) { JOptionPane.showMessageDialog(this, "回答正确!"); } else { JOptionPane.showMessageDialog(this, "回答错误!"); } } else if (e.getSource() == nextButton) { // 处理下一题逻辑 currentRiddleIndex++; if (currentRiddleIndex < riddles.length) { riddleLabel.setText(riddles[currentRiddleIndex]); } else { JOptionPane.showMessageDialog(this, "已经没有更多题目了!"); } } }
然后准备一下灯谜的素材,最后代码如下:
public class LanternRiddlesGame extends JFrame implements ActionListener { private JLabel riddleLabel; private JButton submitButton; private JButton nextButton; private String[] riddles = { "铁公鸡一毛不拔", "头上有青天", "纸上谈兵" }; private String[] answers = { "一丝不苟", "高瞻远瞩", "言之无物" }; private int currentRiddleIndex = 0; public LanternRiddlesGame() { super("猜灯谜小游戏"); // 创建标签和按钮 riddleLabel = new JLabel(riddles[currentRiddleIndex]); submitButton = new JButton("提交"); nextButton = new JButton("下一题"); // 添加按钮监听器 submitButton.addActionListener(this); nextButton.addActionListener(this); // 设置布局和组件位置大小 setLayout(new FlowLayout()); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // 居中显示 add(riddleLabel); add(submitButton); add(nextButton); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == submitButton) { // 处理提交答案逻辑 String userAnswer = JOptionPane.showInputDialog("请输入你的答案:"); if (userAnswer.equalsIgnoreCase(answers[currentRiddleIndex])) { JOptionPane.showMessageDialog(this, "回答正确!"); } else { JOptionPane.showMessageDialog(this, "回答错误!"); } } else if (e.getSource() == nextButton) { // 处理下一题逻辑 currentRiddleIndex++; if (currentRiddleIndex < riddles.length) { riddleLabel.setText(riddles[currentRiddleIndex]); } else { JOptionPane.showMessageDialog(this, "已经没有更多题目了!"); } } } public static void main(String[] args) { new LanternRiddlesGame(); } }
来看看效果:
点击提交按钮进行答题:
此时回答正确:
点击下一题可以切换题目,这样一个简单的猜灯谜小游戏就制作完成了。
马上也要到中秋和国庆的日子了,在这里也提前祝各位读者朋友中秋节快乐!
以上就是基于Java事件监听编写一个中秋猜灯谜小游戏的详细内容,更多关于Java编写中秋猜灯谜的资料请关注脚本之家其它相关文章!