欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Java事件監(jiān)聽編寫一個中秋猜燈謎小游戲

 更新時間:2023年09月13日 09:10:24   作者:隨身電源  
眾所周知,JavaSwing是Java中關(guān)于窗口開發(fā)的一個工具包,可以開發(fā)一些窗口程序,然后由于工具包的一些限制,導(dǎo)致Java在窗口開發(fā)商并沒有太多優(yōu)勢,不過,在JavaSwing中關(guān)于事件的監(jiān)聽機(jī)制是我們需要重點(diǎn)掌握的內(nèi)容,本文將基于Java事件監(jiān)聽編寫一個中秋猜燈謎小游戲

何為事件監(jiān)聽

在Java中,事件監(jiān)聽(Event Listening)是一種處理用戶交互的機(jī)制。通過事件監(jiān)聽,你的程序可以在用戶進(jìn)行某些操作(如點(diǎn)擊按鈕、輸入文本、移動鼠標(biāo)等)時執(zhí)行特定的任務(wù)。

事件監(jiān)聽通常涉及三個組成部分:

  • 事件源:這是產(chǎn)生事件的組件。例如,一個按鈕、一個文本框、一個菜單等都可以是事件源。
  • 事件:這是用戶與事件源交互的動作。例如,點(diǎn)擊、鍵入、鼠標(biāo)移動等。每個事件類型都有一個對應(yīng)的Java類,例如ActionEvent、KeyEvent等。
  • 事件監(jiān)聽器:這是一個特殊的類,用于處理事件。你需要創(chuàng)建一個實(shí)現(xiàn)了特定事件監(jiān)聽器接口的類,并覆蓋其中的方法以定義當(dāng)事件發(fā)生時要執(zhí)行的操作。例如,如果你想要在用戶點(diǎn)擊按鈕時顯示一條消息,你可以創(chuàng)建一個實(shí)現(xiàn)ActionListener接口的類,并在actionPerformed方法中顯示消息。

事件監(jiān)聽的工作原理是:你將事件監(jiān)聽器注冊到事件源上,當(dāng)用戶與事件源交互時,Java運(yùn)行環(huán)境會自動調(diào)用相應(yīng)的事件監(jiān)聽器處理事件。

當(dāng)然了,以上是官方的一些概念,一如既往地晦澀難懂,簡單點(diǎn)說,就是你在點(diǎn)擊窗口中的一些操作按鈕時,Java程序是如何知道你點(diǎn)擊了它們呢?其中就用到了一些回調(diào)方法,當(dāng)你點(diǎn)擊按鈕的時候,便會調(diào)用這些回調(diào)方法,此時Java程序便知道你點(diǎn)擊了某個按鈕,接下來就可以進(jìn)行程序的下一步操作。

比如下面的一個程序:

public class Example {
    public static void main(String[] args) {
        JFrame frame = new JFrame("事件監(jiān)聽");
        frame.setLocationRelativeTo(null); 
        JButton button = new JButton("點(diǎn)我試試!");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "你真點(diǎn)啊");
            }
        });
        frame.getContentPane().add(button);
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

在這個程序中,我們創(chuàng)建了一個窗口,并在窗口中添加了一個按鈕,此時通過調(diào)用addActionListener給按鈕添加了一個點(diǎn)擊事件,其中有回調(diào)方法actionPerformed,當(dāng)點(diǎn)擊按鈕時便會調(diào)用它,我們來試一試:

現(xiàn)在點(diǎn)擊它:

這樣一個點(diǎn)擊事件的監(jiān)聽就完成了。

具體的執(zhí)行流程如下圖:

動手實(shí)現(xiàn)一個猜燈謎小游戲

現(xiàn)在我們就可以用所學(xué)知識做一個簡單的猜燈謎小游戲了,首先我們設(shè)計一下窗體:

我們可以做的簡單點(diǎn),將題目顯示在出題框里,然后點(diǎn)擊提交按鈕提交答案,此時彈出輸入框,下一題可以切換題目,先把窗體畫出來:

public LanternRiddlesGame() {
    super("猜燈謎小游戲");
    // 創(chuàng)建標(biāo)簽和按鈕
    riddleLabel = new JLabel(riddles[currentRiddleIndex]);
    submitButton = new JButton("提交");
    nextButton = new JButton("下一題");
    // 添加按鈕監(jiān)聽器
    submitButton.addActionListener(this);
    nextButton.addActionListener(this);
    // 設(shè)置布局和組件位置大小
    setLayout(new FlowLayout());
    setSize(400, 300);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null); // 居中顯示
    add(riddleLabel);
    add(submitButton);
    add(nextButton);
    setVisible(true);
}

那么接下來的步驟就非常簡單了,對里面的控件進(jìn)行事件的監(jiān)聽:

@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, "已經(jīng)沒有更多題目了!");
        }
    }
}

然后準(zhǔn)備一下燈謎的素材,最后代碼如下:

public class LanternRiddlesGame extends JFrame implements ActionListener {
    private JLabel riddleLabel;
    private JButton submitButton;
    private JButton nextButton;
    private String[] riddles = {
            "鐵公雞一毛不拔",
            "頭上有青天",
            "紙上談兵"
    };
    private String[] answers = { "一絲不茍", "高瞻遠(yuǎn)矚", "言之無物" };
    private int currentRiddleIndex = 0;
    public LanternRiddlesGame() {
        super("猜燈謎小游戲");
        // 創(chuàng)建標(biāo)簽和按鈕
        riddleLabel = new JLabel(riddles[currentRiddleIndex]);
        submitButton = new JButton("提交");
        nextButton = new JButton("下一題");
        // 添加按鈕監(jiān)聽器
        submitButton.addActionListener(this);
        nextButton.addActionListener(this);
        // 設(shè)置布局和組件位置大小
        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, "已經(jīng)沒有更多題目了!");
            }
        }
    }
    public static void main(String[] args) {
        new LanternRiddlesGame();
    }
}

來看看效果:

點(diǎn)擊提交按鈕進(jìn)行答題:

此時回答正確:

點(diǎn)擊下一題可以切換題目,這樣一個簡單的猜燈謎小游戲就制作完成了。

馬上也要到中秋和國慶的日子了,在這里也提前祝各位讀者朋友中秋節(jié)快樂!

以上就是基于Java事件監(jiān)聽編寫一個中秋猜燈謎小游戲的詳細(xì)內(nèi)容,更多關(guān)于Java編寫中秋猜燈謎的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java自己手動控制kafka的offset操作

    java自己手動控制kafka的offset操作

    這篇文章主要介紹了java自己手動控制kafka的offset操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 詳解Maven Docker鏡像使用技巧

    詳解Maven Docker鏡像使用技巧

    這篇文章主要介紹了詳解Maven Docker鏡像使用技巧,Maven是目前最流行的Java項(xiàng)目管理工具之一,提供了強(qiáng)大的包依賴管理和應(yīng)用構(gòu)建功能。本文以Maven為例介紹了Docker在應(yīng)用構(gòu)建中的一些常見技巧。
    2018-06-06
  • list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細(xì)解析

    list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細(xì)解析

    以下是對Java中l(wèi)ist,set,map,數(shù)組之間的相互轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • 淺談Spring中Bean的作用域、生命周期

    淺談Spring中Bean的作用域、生命周期

    這篇文章主要介紹了淺談Spring中Bean的作用域、生命周期,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Java pdu短信解碼全面解析

    Java pdu短信解碼全面解析

    本文是根據(jù)python的方法改寫的pdu短信解碼,非常不錯,代碼簡單易懂具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-10-10
  • Redis打開rdb文件常用方法詳解

    Redis打開rdb文件常用方法詳解

    這篇文章主要介紹了Redis打開rdb文件常用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 詳解java如何處理各種批量數(shù)據(jù)入庫

    詳解java如何處理各種批量數(shù)據(jù)入庫

    這篇文章主要為大家詳細(xì)介紹了java如何使用BlockingQueue處理各種批量數(shù)據(jù)入庫,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Java字符串駝峰與下?lián)Q線格式轉(zhuǎn)換如何實(shí)現(xiàn)

    Java字符串駝峰與下?lián)Q線格式轉(zhuǎn)換如何實(shí)現(xiàn)

    這篇文章主要介紹了Java字符串駝峰與下?lián)Q線格式轉(zhuǎn)換如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Java中拷貝list數(shù)組幾種常見的方法

    Java中拷貝list數(shù)組幾種常見的方法

    這篇文章主要給大家介紹了關(guān)于Java中拷貝list數(shù)組幾種常見的方法,在Java中,List是一個接口,它有多個實(shí)現(xiàn)類,如ArrayList、LinkedList等,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Java8新特性之Stream API詳解

    Java8新特性之Stream API詳解

    這篇文章主要介紹了Java8新特性之StreamAPI詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評論