ComboBox.java
上传用户:luxiaowei
上传日期:2022-06-06
资源大小:58k
文件大小:3k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package com.framework;
  6. import javax.microedition.lcdui.Graphics;
  7. import javax.microedition.lcdui.Image;
  8. /**
  9.  *
  10.  * @author swaroop_kumar
  11.  */
  12. public class ComboBox extends UIControl{
  13.     GTantra font;
  14.     String label;
  15.     int charHeight;
  16.     ListControl listControl;
  17.     boolean disablePopUp = false;
  18.     Image image;
  19.     private static final int padding = 3;
  20.     private int pallet = 0;
  21.     public ComboBox(Image image,String text,GTantra font,String list[],int currentIndex) {
  22.        this.image = image;
  23.        this.font = font;
  24.        this.label = text;
  25.        charHeight = Util.getMaxCharHeight(font,text);
  26.        int max = getMaxWidth(list);
  27.        if(max < font.getStringWidth(text))
  28.            max = font.getStringWidth(text);
  29.        setWidth(max + (padding * 2) + image.getWidth());
  30.        setHeight(image.getHeight());
  31.        listControl = new ListControl(this,font, width, currentIndex, list);
  32.     }
  33.     int getMaxWidth(String arry[])
  34.     {
  35.         int max= 0;
  36.         for (int idx = 0; idx < arry.length; idx++) {
  37.            if(font.getStringWidth(arry[idx]) > max)
  38.                max = font.getStringWidth(arry[idx]);
  39.             
  40.         }
  41.         return max;
  42.     }
  43.     public boolean isDisablePopUp() {
  44.         return disablePopUp;
  45.     }
  46.     public void setDisablePopUp(boolean disablePopUp) {
  47.         this.disablePopUp = disablePopUp;
  48.     }
  49.      public String getText()
  50.     {
  51.         return this.label ;
  52.     }
  53.     public void setText(String str)
  54.     {
  55.         this.label = str;
  56.     }
  57.     public void paint(Graphics g) {
  58.         g.setColor(0xFFFFFF);
  59.         g.fillRect(0, 0, width - 1, getHeight() - 1);
  60.         g.drawImage(image, getWidth() - image.getWidth(), 0, 0);
  61.         g.setColor(0x7F9DB5);
  62.         g.drawRect(0, 0, width - 1, getHeight() - 1);
  63.         font.setCurrentPallete(pallet);
  64.         font.drawString(g, label,((width - image.getWidth()) >> 1) + 1, (getHeight() - charHeight) >> 1, GTantra.TEXT_HCENTER);
  65.         int transY = g.getTranslateY();
  66.         if(listControl.isVisible())
  67.         {
  68.             int clipX, clipY , clipWidth,clipHeight;
  69.             clipX = g.getClipX();
  70.             clipY = g.getClipY();
  71.             clipWidth = g.getClipWidth();
  72.             clipHeight = g.getClipHeight();
  73.             listControl.setHeight(font.getFontHeight() * 4);
  74.             if(transY + getHeight() + (font.getFontHeight() * 4) >= DisplayManager.getInst().getHeight() /*- CommonMethods.getSoftkeyBarHeight()*/)
  75.             {
  76.                  listControl.setPoistion(0, -listControl.getHeight());
  77.             }   
  78.             else
  79.             {
  80.                 listControl.setPoistion(0, getHeight());
  81.             }
  82.             g.setClip(0, listControl.getY(), listControl.getWidth()+5, listControl.getHeight());
  83.             listControl.paintUI(g);
  84.             g.setClip(clipX, clipY, clipWidth, clipHeight);
  85.         }
  86.         
  87.     }
  88.     public boolean keyPressed(int keycode) {
  89.         int gameKey = DisplayManager.getInst().getGameAction(keycode);
  90.         if (!disablePopUp && gameKey == DisplayManager.FIRE || keycode == KeyEvent.KEY_SOFT_CENTER || keycode == DisplayManager.KEY_NUM5) {
  91.             listControl.setVisible(true);
  92.             DisplayManager.getInst().setListControl(listControl);
  93.             return true;
  94.             
  95.         }
  96.         return false;
  97.     }
  98.     
  99. }