怎么理解Java事件響應(yīng)

這篇文章主要介紹“怎么理解Java事件響應(yīng)”,在日常操作中,相信很多人在怎么理解Java事件響應(yīng)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解Java事件響應(yīng)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)從2013年開始,先為東寶等服務(wù)建站,東寶等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為東寶企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

在 GUI中,我們看到了如何用圖形樹來組織一個圖形界面。然而,這樣的圖形界面是靜態(tài)的。我們無法互動的對該界面進(jìn)行操作。GUI的圖形元素需要增加事件響應(yīng)(event handling),才能得到一個動態(tài)的圖形化界面。

元素, 事件, 監(jiān)聽器

我們在 GUI一文中提到了許多圖形元素。有一些事件(Event)可能發(fā)生在這些圖形元素上,比如:

  • 點(diǎn)擊按鈕

  • 拖動滾動條

  • 選擇菜單

Java中的事件使用對象表示,比如ActionEvent。每個事件有作用的圖形對象,比如按鈕,滾動條,菜單。

所謂互動的GUI,是指當(dāng)上面事件發(fā)生時,會有相應(yīng)的動作產(chǎn)生,比如:

  • 改變顏色

  • 改變窗口內(nèi)容

  • 彈出菜單

每個動作都針對一個事件。我們將動作放在一個監(jiān)聽器(ActionListener)中,然后讓監(jiān)聽器監(jiān)視(某個圖形對象)的事件。當(dāng)事件發(fā)生時,監(jiān)聽器中的動作隨之發(fā)生。

怎么理解Java事件響應(yīng) 

因此,一個響應(yīng)式的GUI是圖形對象、事件對象、監(jiān)聽對象三者互動的結(jié)果。我們已經(jīng)知道了如何創(chuàng)建圖形對象。我們需要給圖形對象增加監(jiān)聽器,并讓監(jiān)聽器捕捉事件。

按鈕響應(yīng)

下面實(shí)現(xiàn)一個響應(yīng)式的按鈕。在點(diǎn)擊按鈕之后,面板的顏色會改變,如下圖:

怎么理解Java事件響應(yīng)

import javax.swing.*;import java.awt.event.*;import java.awt.*;public class HelloWorldSwing {    private static void createAndShowGUI() {
        JFrame frame = new JFrame("HelloWorld");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        // Pane's layout
        Container cp = frame.getContentPane();
        cp.setLayout(new FlowLayout());        // add interactive panel to Content Pane
        cp.add(new ButtonPanel());        // show the window        frame.pack();
        frame.setVisible(true);
    }    public static void main(String[] args) {
        Runnable tr = new Runnable() {            public void run() {
                createAndShowGUI();
            }
        };
        javax.swing.SwingUtilities.invokeLater(tr);
    }
}/**
 * JPanel with Event Handling */class ButtonPanel extends JPanel
{    public ButtonPanel()
    {
        JButton yellowButton = new JButton("Yellow");
        JButton redButton = new JButton("Red");        
        this.add(yellowButton);        this.add(redButton);        
        /**
         * register ActionListeners         */
        ColorAction yellowAction = new ColorAction(Color.yellow);
        ColorAction redAction    = new ColorAction(Color.red);
        
        yellowButton.addActionListener(yellowAction);
        redButton.addActionListener(redAction);
    }    
    /**
     * ActionListener as an inner class     */
    private class ColorAction implements ActionListener
    {        public ColorAction(Color c)
        { 
            backgroundColor = c;
    }   
    
        /**
         * Actions         */
        public void actionPerformed(ActionEvent event)
        {
            setBackground(backgroundColor); // outer object, JPanel method            repaint();
        }    
        private Color backgroundColor;
    }
}

上面,我們用一個內(nèi)部類ColorAction來實(shí)施ActionListener接口。這樣做是為了讓監(jiān)聽器能更方便的調(diào)用圖形對象的成員,比如setBackground()方法。

ActionListener的actionPerformed()方法必須被覆蓋。該方法包含了事件的對應(yīng)動作。該方法的參數(shù)為事件對象,即監(jiān)聽ActionEvent類型的事件。ActionEvent是一個高層的類,Java會找到圖形對象(按鈕)會發(fā)生的典型事件(點(diǎn)擊)作為事件。

ColorAction生成的對象即為監(jiān)聽器對象。

我們?yōu)閮蓚€按鈕JButton添加了相應(yīng)的監(jiān)聽器對象。當(dāng)有事件發(fā)生時,對應(yīng)動作將隨之產(chǎn)生。

到此,關(guān)于“怎么理解Java事件響應(yīng)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站名稱:怎么理解Java事件響應(yīng)
本文網(wǎng)址:http://muchs.cn/article6/ispoog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)網(wǎng)站營銷、建站公司云服務(wù)器、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)