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

J2ME

开发平台:

Java

  1. /*
  2.  * RadioControl.java
  3.  *
  4.  * Created on April 23, 2010, 4:45 PM
  5.  *
  6.  * To change this template, choose Tools | Template Manager
  7.  * and open the template in the editor.
  8.  */
  9. package com.framework;
  10. import javax.microedition.lcdui.Graphics;
  11. import javax.microedition.lcdui.Image;
  12. /**
  13.  *
  14.  * @author Tejaswi
  15.  */
  16. public class RadioControl extends UIControl{
  17.     
  18.     GTantra font;
  19.     String text;
  20.     private static final int PADDING = 3;
  21.     TickerTextControl textControl;
  22.     int radioCircleBorderColor;
  23.     int radioFillColor;
  24.     boolean isChecked = false;
  25.     int radioWidth;
  26.     RadioGroup parentGroup;
  27.     Image radioButtonImg,radioButtonOnImg;
  28.     /** Creates a new instance of RadioControl */
  29.     public RadioControl(String text,GTantra font) {
  30.         this.text = text;
  31.         this.font = font;
  32.         radioWidth = font.getFontHeight() - 4;
  33.         textControl = new TickerTextControl(text,font);
  34.         resize();
  35.         
  36.     }
  37.     /** Creates a new instance of RadioControl */
  38.     public RadioControl(String text,GTantra font , Image radioButtonImage,Image radioButtonOnImg) {
  39.         this.text = text;
  40.         this.font = font;
  41.         this.radioButtonImg = radioButtonImage;
  42.         this.radioButtonOnImg = radioButtonOnImg;
  43.         radioWidth = this.radioButtonImg.getWidth();
  44.         textControl = new TickerTextControl(text,font);
  45.         setHeight(radioButtonImg.getHeight());
  46.         resize();
  47.         
  48.     }
  49.     public void showNotify() {
  50.         super.showNotify();
  51.         textControl.showNotify();
  52.         textControl.setPoistion(radioWidth + PADDING , (getHeight() - textControl.getHeight()) >> 1);
  53.         if(parentGroup != null)
  54.         {
  55.             parentGroup.showNotify();
  56.         }
  57.        
  58.     }
  59.     public void hideNotify() {
  60.         super.hideNotify();
  61.         textControl.hideNotify();
  62.     }
  63.     private void resize()
  64.     {
  65.         setWidth(textControl.getWidth() + PADDING + radioWidth);
  66.         setHeight(Math.max(font.getFontHeight() + 2 ,getHeight()));
  67.     }
  68.     public void paint(Graphics g) {
  69.         if(radioButtonImg == null)
  70.         {
  71.             g.setColor(radioCircleBorderColor);
  72.             g.drawArc( 0 , (getHeight() - radioWidth) >> 1 , radioWidth,radioWidth, 0 , 360);
  73.             if(isChecked)
  74.             {
  75.                 g.setColor(radioFillColor);
  76.                 g.fillArc(3, ((getHeight() - radioWidth) >> 1) + 3 , radioWidth - 4 , radioWidth - 4 , 0 , 360);
  77.             }
  78.         }else{
  79.             if(isChecked)
  80.             {
  81.                 g.drawImage(radioButtonOnImg ,  0, (getHeight() - radioButtonOnImg.getHeight()) >> 1 , 0);
  82.             }else{
  83.                 g.drawImage(radioButtonImg ,  0, (getHeight() - radioButtonImg.getHeight()) >> 1 , 0);
  84.             }
  85.         }
  86.         
  87.         textControl.paintUI(g);
  88.     }
  89.     public boolean isChecked()
  90.    {
  91.         return this.isChecked;
  92.     }
  93.     public void setChecked(boolean value)
  94.     {
  95.         this.isChecked = value;
  96.         if(parentGroup != null)
  97.         {
  98.             parentGroup.selectionChanged(this);
  99.         }
  100.     }
  101.     public boolean keyPressed(int keycode) {
  102.         if(DisplayManager.getInst().getGameAction(keycode) == DisplayManager.FIRE && !isChecked)
  103.         {
  104.             if(parentGroup != null)
  105.             {
  106.                 parentGroup.selectionChanged(this);
  107.             }else{
  108.                 isChecked = true;
  109.             }
  110.             return true;
  111.         }
  112.         return false;
  113.     }
  114.     public void setRadioCircleBorderColor(int radioCircleBorderColor) {
  115.         this.radioCircleBorderColor = radioCircleBorderColor;
  116.     }
  117.     public void setRadioFillColor(int radioFillColor) {
  118.         this.radioFillColor = radioFillColor;
  119.     }
  120. }