亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

分析MIDP的高級事件處理機制

2019-11-18 16:08:00
字體:
來源:轉載
供稿:網友
   MIDP中的事件處理機制在J2ME用戶圖形界面開發中具有舉足輕重的地位,本文將深入分析MIDP高級事件處理機制,本文提供的程序是新手學習不錯的例子。在接下來的文章我會繼續講述低級事件處理機制。

   MIDP的事件處理處理機制同樣是采用回調的機制,你可以參考AWT的事件處理原理。在MIDP中分高級事件處理和低級事件處理,前者主要是針對高級UI,而后者主要是這對Canvas這樣的低級UI的。不管怎樣,我們必須首先介紹的是Command類,移動信息設備的輸入主要來自于手機的鍵盤,導航則主要是由按鈕來完成的,例如軟鍵和導航鍵。Command類包裝了動作的信息,但是并沒有包括動作觸發后應該做什么,這些是在CommanListener內實現的??纯碈ommand的構造器吧
Command command = new Command("退出",Command.EXIT,1),構造器的參數分別表示按鈕的標簽,按鈕的類型和優先級別。移動信息設備是根據后面兩個參數對按鈕進行布局的。

   高級事件處理主要由兩個接口來實現,一個是CommandListener,一個是ItemStateListener。在CommandListener中定義了方法commandAction(Command cmd,Displayable disp),我們必須實現這個方法來完成事件處理,告訴應用程序當在disp界面下如果cmd按鈕并按下的時候他應該去做什么。ItemStateListener中定義了方法itemStateChanged(Item item),應用程序通過他來得到在Form內的item內部狀態發生變化的事件。用戶在進行如下操作的時候都會觸發這樣的事件,調整交互性Guage、在TextField內輸入或者修改內容、修改DateField、改變ChoiceGroup的狀態。

    盡管我們已經通過上面的介紹了解了事件處理的機制,但是你會發現我們進行用戶界面導航的時候仍然非常的麻煩,因為這不是在瀏覽器上開發界面,我們能做的只能是通過Command來進行處理。下面我將通過一個例子來說明如何使用CommandListener和ItemStateListener,這個例子有兩個界面一個界面用來輸入另一個用來顯示用戶的輸入。在輸入界面如果我們選擇click這個ChoiceGroup,界面會出現另外一個文本輸入,如果我們不選擇他就不會出現。在這樣一個程序中充分說明了如何使用上述兩個接口來完成MIDP高級事件的處理,但是也暴露出了導航難得問題,在以后的文章中我會介紹如何使用MVC的設計模式來解決這個問題。下面是程序執行的界面抓圖

分析MIDP的高級事件處理機制(圖一)分析MIDP的高級事件處理機制(圖二)分析MIDP的高級事件處理機制(圖三)
程序源代碼如下所示:
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class HighLevelMIDlet extends MIDlet
{

    PRivate Display display;
    private MainUI mainUI;
    private DisplayUI displayUI;
    
  
    protected void startApp() throws MIDletStateChangeException
    {
         initMIDlet();

    }
   
    private void initMIDlet()
    {
        display = Display.getDisplay(this);
        mainUI = new MainUI(this);
        displayUI = new DisplayUI(this,mainUI);
        display.setCurrent(mainUI);
    }
   
    public DisplayUI getDisplayUI()
    {
        return displayUI;
    }
    public Display getDisplay()
    {
        return display;
    }



    protected void pauseApp()
    {
       

    }

 
    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {
       

    }

}

import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;


public class MainUI extends Form implements CommandListener, ItemStateListener
{

    private HighLevelMIDlet midlet;
    private TextField inputField;
    private ChoiceGroup choice;
    private TextField inputField2;
    private int index;
    public static final Command cmd = new Command("Display", Command.ITEM, 2);

    public MainUI(HighLevelMIDlet midlet)
    {
        super("form");
        this.midlet = midlet;
        init();
    }

    public void init()
    {
       
        inputField = new TextField("Input", null, 25, TextField.ANY);
        inputField2 = new TextField("Input2", null, 25, TextField.ANY);
        choice = new ChoiceGroup("click", Choice.MULTipLE);
        choice.append("Another", null);
        this.append(inputField);
        this.append(choice);
        this.addCommand(cmd);
        this.setCommandListener(this);
        this.setItemStateListener(this);

    }

 
    public void commandAction(Command arg0, Displayable arg1)
    {
        if(arg0 == cmd)
        {
            String input = inputField.getString();
            System.out.println(input);
            midlet.getDisplayUI().setInput(input);
            midlet.getDisplay().setCurrent(midlet.getDisplayUI());
           
        }


    }

 
    public void itemStateChanged(Item arg0)
    {
       
        if(arg0 == choice)
        {
           
            if(choice.isSelected(0) == true)
            {
                index = this.append(inputField2);
            }
            else
            {
                this.delete(index);
            }
        }

    }

}

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;


public class DisplayUI extends Form implements CommandListener
{

    private HighLevelMIDlet midlet;
    private StringItem displayItem;
    private Displayable backUI;
    public static final Command backCommand = new Command("Back", Command.BACK,
            2);

    public DisplayUI(HighLevelMIDlet midlet,Displayable backUI)
    {
        super("Display");
        this.midlet = midlet;
        this.backUI = backUI;
        init();
        this.addCommand(backCommand);
        this.setCommandListener(this);
    }

    private void init()
    {
        displayItem = new StringItem("you input", null);
        this.append(displayItem);
    }
   
    public void setInput(String input)
    {
        displayItem.setText(input);
    }
  
    public void commandAction(Command arg0, Displayable arg1)
    {
        if(arg0 == backCommand)
        {
            midlet.getDisplay().setCurrent(backUI);
        }


    }

}

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品视频免费不卡69堂| 57pao国产成人免费| 亚洲国产精品成人一区二区| 九九热r在线视频精品| 色综合久久88色综合天天看泰| 日韩av网址在线| 久久久av网站| 久热精品在线视频| 久久国产视频网站| 中文字幕亚洲欧美日韩在线不卡| 国产精品第一区| 国产精品视频自在线| 色综合久久88| 亚洲人午夜色婷婷| 国产精品手机播放| 国产精品网址在线| 国产成人精品视频在线观看| 久久久精品在线观看| 色一情一乱一区二区| 欧美成人激情图片网| 亚洲欧洲偷拍精品| 午夜精品一区二区三区在线视频| 亚洲第一福利在线观看| 国产精品青青在线观看爽香蕉| 久久久之久亚州精品露出| 操91在线视频| 亚洲精品小视频| 日韩一区二区三区xxxx| 高清欧美性猛交xxxx| 最近2019年中文视频免费在线观看| 亚洲精品wwwww| 欧美高清视频在线播放| 国产欧美日韩综合精品| 91久久国产精品91久久性色| 日韩av色综合| 亚洲欧洲在线播放| 最近中文字幕2019免费| 成人在线观看视频网站| 欧美精品一区二区免费| 亚洲无亚洲人成网站77777| 国产日本欧美一区二区三区| 另类少妇人与禽zozz0性伦| 亚洲天堂日韩电影| 中文字幕在线国产精品| 欧美日韩在线另类| 国产精品h在线观看| 一本色道久久综合狠狠躁篇的优点| 欧美成人免费小视频| 两个人的视频www国产精品| 国产香蕉精品视频一区二区三区| 8090成年在线看片午夜| 欧美在线性视频| 国产精品中文字幕在线| 91深夜福利视频| 亚洲一区二区三区久久| 亚洲精品国精品久久99热一| 欧美日韩亚洲视频| 久久久久久国产精品久久| 日韩一区二区三区国产| 成人国产在线视频| 久久亚洲综合国产精品99麻豆精品福利| 国产精品自拍视频| 国产精品久久久久久久久久三级| 国产视频精品xxxx| 欧美日韩激情视频8区| 成人网在线免费看| 日韩不卡在线观看| 国内外成人免费激情在线视频网站| 日韩精品中文在线观看| 久久综合久久美利坚合众国| 久久精品这里热有精品| 4438全国成人免费| 亚洲精品国产免费| 亚洲а∨天堂久久精品9966| 国产一区视频在线播放| 精品国产自在精品国产浪潮| www.日韩系列| 欧美成人在线影院| 国产精品主播视频| 懂色av中文一区二区三区天美| 国产精品久久一| 狠狠色香婷婷久久亚洲精品| 久久中国妇女中文字幕| 欧美最猛黑人xxxx黑人猛叫黄| 精品视频在线播放色网色视频| 欧美日韩色婷婷| 久久久久久久一区二区三区| 国产精品夫妻激情| 91精品国产91久久久久久| 亚洲精品电影网在线观看| 亚洲视频999| 日韩专区在线播放| 成人久久18免费网站图片| 精品国产乱码久久久久久婷婷| 国产精品久久久久久久久久ktv| 丝袜美腿精品国产二区| 一区二区三区 在线观看视| 日韩免费中文字幕| 成人黄色片在线| www.久久久久| 青青青国产精品一区二区| 亚洲电影免费观看高清完整版在线观看| 欧美视频免费在线| 国产精品欧美久久久| 欧美色视频日本高清在线观看| 精品国产视频在线| 精品国内产的精品视频在线观看| 国产精品成人一区二区三区吃奶| 亚洲最大的免费| 欧美高清在线视频观看不卡| 久久精品视频在线| 亚洲国产精品热久久| 在线激情影院一区| 91精品国产自产在线观看永久| 国产mv久久久| 亚洲视频电影图片偷拍一区| 热久久免费视频精品| 国产精品日韩精品| 日韩中文字幕在线视频播放| 国产午夜精品美女视频明星a级| 91在线视频成人| 在线亚洲国产精品网| 欧美中在线观看| 国内精品久久久久久| 色偷偷噜噜噜亚洲男人的天堂| 69影院欧美专区视频| 久久精品国产99国产精品澳门| 国产精品揄拍一区二区| 亚洲欧美国产va在线影院| 日韩成人小视频| 97人洗澡人人免费公开视频碰碰碰| 精品久久久国产| 久久久亚洲网站| 日韩在线免费视频| 国产精品三级网站| 97超碰国产精品女人人人爽| 日韩欧美国产免费播放| 欧美成人国产va精品日本一级| 国产精品88a∨| 91牛牛免费视频| 国产欧美精品一区二区三区介绍| 欧美色播在线播放| 大荫蒂欧美视频另类xxxx| 国产精品678| 91精品国产高清久久久久久91| 亚洲欧洲午夜一线一品| 国产精品亚洲网站| 久久精品成人一区二区三区| 久久精品国产清自在天天线| 欧美精品情趣视频| 亚洲成人激情在线观看| 精品久久久久久久久久国产| 亚洲午夜久久久久久久| 欧美午夜精品在线| 亚洲精品中文字幕有码专区| 国产成人精品av| 69久久夜色精品国产7777| 久久久久久中文| 国产精欧美一区二区三区| 久久久久久午夜| 在线视频中文亚洲| 亚洲激情视频网| 色www亚洲国产张柏芝| 午夜精品久久久久久久久久久久久|