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

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

一個圖形用戶界面繪畫和事件處理的案例

2019-11-18 16:05:59
字體:
來源:轉載
供稿:網友

一個圖形用戶界面繪畫和事件處理的案例

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


/*
 * A quick sample of graphics,  commands, and event handling.
 */
public class SampleCanvasMIDlet extends MIDlet implements CommandListener {
    Display display;
    Command exitCommand;
    Command backCommand;
    Command okCommand;
    SampleCanvas sample; // Instance of sample canvas

    List itemMenu;
    List exclusiveList;
    List multipleList;
    TextBox textbox;
    Ticker ticker;
    Alert alert;
    Form form;
    StringItem stringItem;
    ImageItem imageItem;
    Image image;
    TextField textItem;
    ChoiceGroup choiceItem;
    DateField dateItem;
    Gauge gaugeItem;


    public SampleCanvasMIDlet() {
        display = Display.getDisplay(this);
        exitCommand = new Command("Exit", Command.EXIT, 1);
        backCommand = new Command("Back", Command.BACK, 2);
        okCommand = new Command("OK", Command.OK, 3);

        ticker = new Ticker("Select an item to display");
        itemMenu = new List(null, Choice.IMPLICIT);
        itemMenu.append("Canvas", null);
        itemMenu.append("Form", null);
        itemMenu.append("Alert", null);
        itemMenu.append("TextBox", null);
        itemMenu.append("Exclusive List", null);
        itemMenu.append("Multiple Choice", null);

        itemMenu.setCommandListener(this);
        itemMenu.addCommand(exitCommand);
        itemMenu.setTicker(ticker);
        display.setCurrent(itemMenu);
    }

    public void startApp () {
    }

    public void destroyApp (boolean unconditional) {
    }

    public void pauseApp () {
    }

    public void commandAction(Command c, Displayable s) {
        if (c == backCommand) {
            display.setCurrent(itemMenu);
        } else if (s == itemMenu) {
            if (c == List.SELECT_COMMAND) {
                // Handle the item sected to be displayed
                int i = itemMenu.getSelectedIndex();
                switch (i) {
                    case 0: // Show Sample canvas              display.setCurrent(getCanvas());
                        break;
                    case 1: // Show the form
                        display.setCurrent(getForm());
                        break;
                    case 2: // Show an alert
                        display.setCurrent(getAlert("Warning", 
                                "This window will dismiss in two seconds."));
                        break;
                    case 3: // Show TextBox
                        display.setCurrent(getTextBox());
                        break;
                    case 4: // Show Exclusive list
                        display.setCurrent(getExclusiveList());
                        break;
                    case 5: // Show Multiple List
                        display.setCurrent(getMultipleList());
                        break;
                }
            } else if (c == exitCommand) {
                notifyDestroyed();
            }
        } else if (s == exclusiveList) {
            int i = exclusiveList.getSelectedIndex();
            String value = exclusiveList.getString(i);
            alert = getAlert("Border selected:", value);
            display.setCurrent(alert, itemMenu);
        } else if (s == multipleList) {
            StringBuffer b = new StringBuffer();
            for (int i = 0; i <= 2; i++) {
                if (multipleList.isSelected(i)) {
                    b.append(multipleList.getString(i));
                    b.append("/n");
                }
            }
            alert = getAlert("Colors selected:", b.toString());
            display.setCurrent(alert, itemMenu);
        } else if (s == textbox) {
            String value = textbox.getString();
            alert = getAlert("Text Entered:", value);
            display.setCurrent(alert, itemMenu);
        } else if (s == form) {
            alert = getAlert("Image options  saved", "");
            display.setCurrent(alert, itemMenu);
        }
    }

    SampleCanvas getCanvas() {
        if (sample == null) {
            sample = new SampleCanvas();
            sample.addCommand(backCommand);
            sample.setCommandListener(this);
        }
        return sample;
    }

    List getExclusiveList() {
        if (exclusiveList == null) {
            exclusiveList = new List("Border Style", Choice.EXCLUSIVE);
            exclusiveList.append("None", null);
            exclusiveList.append("Plain", null);
            exclusiveList.append("Fancy", null);
            exclusiveList.addCommand(backCommand);
            exclusiveList.addCommand(okCommand);
            exclusiveList.setCommandListener(this);
        }
        return exclusiveList;
    }

    List getMultipleList() {
        if (multipleList == null) {
            multipleList = new List("Colors to mix", Choice.MULTIPLE);
            multipleList.append("Red", null);
            multipleList.append("Green", null);
            multipleList.append("Blue", null);
            multipleList.addCommand(backCommand);
            multipleList.addCommand(okCommand);
            multipleList.setCommandListener(this);
        }
        return multipleList;
    }

    TextBox getTextBox() {
        if (textbox == null) {
            textbox = new TextBox("Enter a phone number","", 40,
          TextField.PHONENUMBER);
            textbox.addCommand(backCommand);
            textbox.addCommand(okCommand);
            textbox.setCommandListener(this);
        }
        return textbox;
    }
    Alert getAlert(String title, String contents) {
        if (alert == null) {
            alert = new Alert(title);
            alert.setType(AlertType.WARNING);
            alert.setTimeout(2000);
      alert.setString(contents); 
        } else {
            alert.setTitle(title);
            alert.setString(contents);
        }
        return alert;
    }
    Form getForm() {
         if (form == null) {
            form new Form("Options");

            try {     image = Image.createImage("/images/PhotoAlbum.png");
                imageItem = new ImageItem("                            ImageItem.LAYOUT_NEWLINE_BEFORE, "Mountain");
                form.append(imageItem);
            } catch (java.io.IOException ex) {
            }

            textItem = new TextField("Title:", "Mountain", 32,
             TextField.ANY);
            form.append(textItem);
            dateItem = new DateField("Date:", DateField.DATE);
            dateItem.setDate(new java.util.Date());
            form.append(dateItem);

            choiceItem = new ChoiceGroup("Size:", Choice.EXCLUSIVE);
            choiceItem.append("Small", null);
            choiceItem.append("Large", null);
            form.append(choiceItem);
            gaugeItem = new Gauge("Speed:", true, 10, 5);
            form.append(gaugeItem);

            form.addCommand(backCommand);
            form.addCommand(okCommand);
            form.setCommandListener(this);
        }
        return form;
    }
}


class SampleCanvas extends Canvas {
    int     x, y;           // Location of cross hairs
    String  event = "";     // Last key event type
    int     keyCode;        // Last keyCode pressed
    Font    font;           // Font used for drawing text
    int     fh;             // height of the font
    int     w, h;           // width and height of the canvas
    int     titleHeight;    // Height of the title
    int     pieSize;        // Size of the Pie chart used for width and height
    int     barSize;        // Size of the Bar chart used for width and height
    int     eventHeight;    // Size of the event region
    int     pad;            // Padding used between items

    SampleCanvas() {
        w = getWidth();
        h = getHeight();
        font = Font.getFont(Font.FACE_SYSTEM,
          Font.STYLE_PLAIN, Font.SIZE_SMALL);
        fh = font.getHeight();

        /* Compute the sizes of the bar and pie charts   * It should use all the space except for the title
   * and event regions.
         * Don't let the charts get too small
         */
        pad = 2;
        titleHeight = fh + pad * 2;
        eventHeight = fh * 3;
        barSize = h - (titleHeight + pad) - (eventHeight + pad);
        if (barSize < 20)               // Don't let them get too small
            barSize = 20;
        if (barSize > (w - pad) / 2)    // Shrink to 1/2 width
            barSize = (w - pad) / 2;
        pieSize = barSize;
    }

    protected void keyPressed(int key) {
        keyCode = key;
        event = "Pressed";
        handleActions(key);
        repaint();
    }

    protected void keyRepeated(int key) {
        keyCode = key;
        event = "Repeated";
        handleActions(key);
        repaint();
    }

    protected void keyReleased(int key) {
        keyCode = key;
        event = "Released";
        repaint();
    }

    protected void pointerPressed(int x, int y) {
        this.x = x;
        this.y = y;
        keyCode = 0;
        event = "Pressed";
        repaint();
    }
    protected void pointerReleased(int x, int y) {
        this.x = x;
        this.y = y;
        keyCode = 0;
        event = "Released";
        repaint();
    }

    protected void pointerDragged(int x, int y) {
        this.x = x;
        this.y = y;
        keyCode = 0;
        event = "Dragged";
    }

    void handleActions(int keyCode) {
        int action = getGameAction(keyCode);
        switch (action) {
            case LEFT:
            x -= 1;
            break;
            case RIGHT:
            x += 1;
            break;
            case UP:
            y -= 1;
            break;
            case DOWN:
            y += 1;
            break;
        }
    }

    protected void paint(Graphics g) {

        g.setFont(font);
        g.setGrayScale(255);
        g.fillRect(0, 0, w, h);

        x = (x < 0) ? w - 1 : x;
        y = (y < 0) ? h - 1 : y;
        x = x % w;
        y = y % h;

        // Draw Fill and outline for background of title Text
        int swidth = pad * 2 + font.stringWidth("Pie and Bar Samples");
        int title_x = (w - swidth)/2;

        g.setGrayScale(128);
        g.fillRoundRect(title_x, 0, swidth, fh, 5, 5);
        g.setGrayScale(0);
        g.drawRoundRect(title_x, 0, swidth, fh, 5, 5);

        // Sample Text
        g.setColor(0, 0, 0);
        g.drawString("Pie and Bar Samples", 
         title_x + pad, pad, Graphics.TOPGraphics.LEFT);

  // Translate to below title text
        g.translate(0, titleHeight + pad);

        /*
   * Draw pie chart on the left side
   * using the barSize for width and height
   */
        g.setColor(255, 0, 0);
        g.fillArc(0, 0, pieSize, pieSize, 45, 270);
        g.setColor(0, 255, 0);
        g.fillArc(0, 0, pieSize, pieSize, 0, 45);
        g.setColor(0, 0, 255);
        g.fillArc(0, 0, pieSize, pieSize, 0, -45);
        g.setColor(0);
        g.drawArc(0, 0, pieSize, pieSize, 0, 360);

        // Draw Bar chart on right side of the display
        // scale the values to the pieSize maximum value
        int yorig = barSize;
        int h1 = barSize / 3, h2 = barSize / 2, h3 = barSize;
        int avg = (h1 + h2 + h3) / 3;

        // Move over to draw Bar chart
        g.translate((w + pad) / 2, 0);

        int bw = pieSize / 7;
        if (bw < 2)
             bw = 2;
        g.setColor(255, 0, 0);
        g.fillRect(bw*1, yorig-h1, bw+1, h1);
        g.setColor(0, 255, 0);
        g.fillRect(bw*3, yorig-h2, bw+1, h2);
        g.setColor(0, 0, 255);
        g.fillRect(bw*5, yorig-h3, bw+1, h3);
        g.setColor(0);
        g.drawRect(bw*1, yorig-h1, bw, h1);
        g.drawRect(bw*3, yorig-h2, bw, h2);
        g.drawRect(bw*5, yorig-h3, bw, h3);

        // Draw axis for bar chart.
        g.setGrayScale(0);
        g.drawLine(0, 0, 0, yorig);
        g.drawLine(0, yorig, barSize, yorig);
        g.setStrokeStyle(Graphics.DOTTED);
        g.drawLine(0, yorig - avg, barSize, yorig-avg);
        g.setStrokeStyle(Graphics.SOLID);

  // Restore to left and move down
        g.translate(-(w + pad) / 2, pieSize + pad);

        // Draw the key and pointer status
        g.setColor(128, 128, 128);
        int col1 = font.stringWidth("Action:");
        g.drawString("Key: ",      col1,     0,
         Graphics.TOPGraphics.RIGHT);
        g.drawString(keyString(keyCode), col1, 0,
         Graphics.TOPGraphics.LEFT);
        g.drawString("Action:",    col1,     fh,
         Graphics.TOPGraphics.RIGHT);
        g.drawString(actionString(keyCode), col1, fh,
         Graphics.TOPGraphics.LEFT);
        g.drawString("Event:",     col1,     fh*2,
         Graphics.TOPGraphics.RIGHT);
        g.drawString(event,        col1,     fh*2,
         Graphics.TOPGraphics.LEFT);
        int col2 = 80;
        g.drawString("x:",         col2,     0,
         Graphics.TOPGraphics.RIGHT);
        g.drawString(Integer.toString(x), col2, 0,
         Graphics.TOPGraphics.LEFT);
        g.drawString("y:",         col2,     fh,
         Graphics.TOPGraphics.RIGHT);
        g.drawString(Integer.toString(y), col2, fh,
         Graphics.TOPGraphics.LEFT);

        // Restore the origin and draw the crosshairs on top
        g.translate(-g.getTranslateX(), -g.getTranslateY());

        g.setColor(0, 0, 0);
        g.drawLine(x, y - 5, x, y + 5);
        g.drawLine(x - 5, y, x + 5, y);
    }
    String keyString(int keyCode) {
        if (keyCode == 0) {
            return "";
        }
        return Integer.toString(keyCode);
    }

    String actionString(int keyCode) {
        if (keyCode == 0) {
            return "";
        }

  int action = getGameAction(keyCode);
  switch (action) {
  case FIRE:
      return "Fire";
  case LEFT:
      return "Left";
  case RIGHT:
      return "Right";
  case DOWN:
      return "Down";
  case UP:
      return "Up";
  case GAME_A:
      return "Game A";
  case GAME_B:
      return "Game B";
  case GAME_C:
      return "Game C";
  case GAME_D:
      return "Game D";
  case 0:
      return "";
  default:
      return Integer.toString(action);
  }
    }
}


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



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色噜噜久久综合伊人一本| 国产精品视频最多的网站| 国产精品久久9| 欧美美女18p| 成人免费视频97| 成人乱人伦精品视频在线观看| 日本久久久久久久久久久| 国产精品aaa| 欧美日韩成人免费| 粉嫩av一区二区三区免费野| 91欧美激情另类亚洲| 久久久久国产精品免费| www国产精品com| 国产成人精品免高潮在线观看| 911国产网站尤物在线观看| 深夜福利一区二区| 成人黄色免费看| 91精品久久久久久久久青青| 久久综合色88| 亚洲欧美日韩高清| 中文字幕精品影院| 国产欧美精品在线| 久久青草福利网站| 欧美一级淫片aaaaaaa视频| 日韩久久午夜影院| 中文字幕国产亚洲2019| 色999日韩欧美国产| 最近免费中文字幕视频2019| 日韩电影免费在线观看中文字幕| 亚洲欧美在线一区| 日韩av在线网页| 亚洲裸体xxxx| 色777狠狠综合秋免鲁丝| 欧美在线免费视频| 久久久久久久网站| 国产亚洲一区二区精品| 97香蕉超级碰碰久久免费的优势| 久久久久久久久久亚洲| 日韩中文字幕在线视频播放| 国产91|九色| 久久久久国产精品免费网站| 国产视频精品免费播放| 福利视频第一区| 91精品久久久久| 国产91精品久久久| 欧美黑人狂野猛交老妇| www日韩中文字幕在线看| 美女精品久久久| 欧美有码在线观看视频| 久久久久久一区二区三区| 国产视频一区在线| 亚洲自拍av在线| 午夜精品久久久久久久99黑人| 亚洲va欧美va国产综合久久| 青青青国产精品一区二区| 精品久久久久久| 亚洲精品自拍偷拍| 成人午夜一级二级三级| 亚洲成人黄色网| 国产欧美日韩丝袜精品一区| 欧美成人精品在线| 国产婷婷成人久久av免费高清| 91av视频在线播放| 热久久99这里有精品| 福利一区视频在线观看| 日韩一区二区欧美| 国产精品jizz在线观看麻豆| 亚洲精选在线观看| 91精品综合视频| 中文字幕在线观看日韩| 亚洲国产高清高潮精品美女| 一区二区在线视频| 欧美激情精品在线| 中文字幕久热精品视频在线| 亚洲一区二区三区四区视频| 久久久之久亚州精品露出| 日韩av在线免费观看一区| 国产视频综合在线| 国产成人免费91av在线| 色综合伊人色综合网| 久久综合国产精品台湾中文娱乐网| 亚洲第一精品夜夜躁人人躁| 亚洲精品天天看| 国产美女搞久久| 国产a∨精品一区二区三区不卡| 一区二区三区回区在观看免费视频| 欧美中文字幕在线观看| 亚洲欧美日韩第一区| 国产主播精品在线| 美女视频久久黄| 国产日韩欧美视频在线| 亚洲热线99精品视频| 久久久亚洲精选| 亚洲午夜久久久久久久| 精品久久久久久中文字幕大豆网| 亚洲视频在线观看网站| 欧美成年人视频网站| 日本19禁啪啪免费观看www| 91产国在线观看动作片喷水| 欧美精品18videosex性欧美| 欧美自拍视频在线观看| 亚洲综合精品伊人久久| 国产视频精品免费播放| 久久黄色av网站| 中文字幕国内精品| 亚洲欧美日韩第一区| 国产欧美一区二区三区在线| 青青久久av北条麻妃黑人| 国产精品欧美日韩一区二区| 国产69精品久久久久9| 国产色婷婷国产综合在线理论片a| 亚洲成人网在线| 久久久久久久久91| 亚洲男人天堂2024| 久久久国产精品免费| 7m精品福利视频导航| 国产精品美女在线观看| 国产精品入口尤物| 亚洲精品日韩在线| 国产欧美欧洲在线观看| xvideos成人免费中文版| 欧美日韩成人在线播放| 欧美猛交ⅹxxx乱大交视频| 国产精品一区专区欧美日韩| 青草热久免费精品视频| 日韩在线视频线视频免费网站| 青青久久av北条麻妃黑人| 国产欧美日韩精品丝袜高跟鞋| 日韩在线一区二区三区免费视频| 国产精品看片资源| 国产不卡在线观看| 欧美亚洲一级片| 日韩欧美亚洲国产一区| 色妞色视频一区二区三区四区| 日韩视频中文字幕| 精品久久久久久久大神国产| 亚洲美女福利视频网站| 亚洲精品视频在线观看视频| 国产丝袜一区二区| 欧美激情亚洲另类| 久久久国产影院| 久久九九亚洲综合| 性色av一区二区三区红粉影视| 欧美亚洲日本网站| 亚洲精品成人免费| 亚洲精品久久久久中文字幕欢迎你| 成人黄色在线免费| 亚洲欧美日韩视频一区| 亚洲欧洲日产国码av系列天堂| 最近2019中文字幕大全第二页| 亚洲国产另类 国产精品国产免费| 97久久精品人人澡人人爽缅北| 日韩欧美精品中文字幕| 91精品久久久久久久久久久久久| 亚洲激情在线观看| 日韩精品一区二区三区第95| 成年无码av片在线| 亚洲欧美色婷婷| 国产成人精品优优av| 亚洲另类图片色| 亚洲午夜av电影| 热久久99这里有精品| 日韩免费不卡av| 成人免费在线视频网站|