Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » 移动互联网  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Re:J2ME编程测试 [Re:booolee]
booolee

me is me



发贴: 101
积分: 20
于 2005-01-14 18:11 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在模拟器上运行OK,但传到T628上就出现错误

代码如下,兄弟们帮我看看:
-------------------------------------------------

/*
* Created on 2005-1-13
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.booolee;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import javax.microedition.lcdui.*;
import java.io.*;
import java.util.Calendar;
import java.util.Date;

/**
* @author libo
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MainMIDlet extends MIDlet implements CommandListener,ItemStateListener{
  
  private static final int ERROR=0;
  private static final int INFO=1;
  
  private Display display;
  private Command cmdSelect,cmdExit,cmdBack,cmdTest,cmdAgain;
  private List mainScr;
  private Form aboutScr,TestScr,ResultScr;
  private Alert alert;
  private DateField df_pTime;  //上次时间  
  private TextField tf_Num;    //时间周期
  private ChoiceGroup cg_option;  //结果输出设置
  
  private String[] mainmenu={"开始预测","关于","退出"};
  

  /**
   *
   */
  public MainMIDlet() {
    //super();
    // TODO Auto-generated constructor stub
    display=Display.getDisplay(this);
    cmdSelect=new Command("选择",Command.OK,1);
    cmdBack=new Command("返回",Command.OK,1);
    cmdTest=new Command("测算",Command.OK,1);
    cmdAgain=new Command("继续",Command.OK,1);
    
    alert=new Alert("","",null,AlertType.INFO);
    alert.setTimeout(2000);
  }

  /* (non-Javadoc)
   * @see javax.microedition.midlet.MIDlet#startApp()
   */
  protected void startApp() throws MIDletStateChangeException {
    // TODO Auto-generated method stub
    genMainScr();
  }
  
  /**
   *创建主屏
   */
  private Screen genMainScr(){
    if (mainScr==null){
      mainScr=new List("保安犬小Q",List.IMPLICIT,mainmenu,null);  
      mainScr.setCommandListener(this);
    }
    display.setCurrent(mainScr);
    return mainScr;
  }
  

  /**
   * 创建关于对话框
   * @return
   * @throws IOException
   */
  private Screen genAboutScr() throws IOException{
    if (aboutScr==null){
      aboutScr=new Form("关于");
      Image img=Image.createImage("/img/about.png");
      ImageItem ii;
      ii=new ImageItem("",img,ImageItem.LAYOUT_CENTER,"BOBO 荣誉出品");
      aboutScr.append(ii);
      aboutScr.append("\n名称:保安犬小Q \n作者:booolee\nQQ:25737305\n功能:测试女性安全期,为一切突发事件作准备Smile");
      aboutScr.addCommand(cmdBack);
      aboutScr.setCommandListener(this);
    }
    display.setCurrent(aboutScr);
    return aboutScr;
  }

  /**
   * 创建测算日期输入框
   * @return
   */
  private Screen genTestSrc(){
    if(TestScr==null){
      TestScr=new Form("保安犬小Q");  
      df_pTime=new DateField("上次月经时间:",DateField.DATE);
      TestScr.append(df_pTime);
      tf_Num=new TextField("月经周期:","28",2,TextField.NUMERIC);
      TestScr.append(tf_Num);
      cg_option=new ChoiceGroup("测算类型:",ChoiceGroup.EXCLUSIVE);
      cg_option.append("下次月经日期",null);
      cg_option.append("下次安全期",null);
      TestScr.append(cg_option);
      TestScr.addCommand(cmdTest);
      TestScr.setCommandListener(this);
    }
    display.setCurrent(TestScr);
    return TestScr;
  }
  
  /**
   * @param type    包括2个值ERROR和INFO
   * @param msg    要显示的信息
   * @param s      提示后要返回的屏
   */
  private void displayAlert(int type,String msg,Screen s){
    alert.setString(msg);
    switch(type){
      case ERROR:
        alert.setTitle("错误");
        alert.setType(AlertType.ERROR);
        break;
      case INFO:
        alert.setTitle("提示");
        alert.setType(AlertType.INFO);
        break;
    }
    display.setCurrent(alert,s==null?display.getCurrent():s);
  }
  
  /**
   * 退出应用
   */
  private void MIDletExit(){
    try{
      destroyApp(false);
      notifyDestroyed();
    }catch(Exception e){
      
    }
    
  }

  /* (non-Javadoc)
   * @see javax.microedition.midlet.MIDlet#pauseApp()
   */
  protected void pauseApp() {
    // TODO Auto-generated method stub

  }

  /* (non-Javadoc)
   * @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
   */
  protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    // TODO Auto-generated method stub

  }

  public void commandAction(Command c,Displayable d){
    if (d==mainScr){
      if (c==List.SELECT_COMMAND){
        switch (mainScr.getSelectedIndex()){        
          case 0:    //开始预测
            genTestSrc();
            break;
          case 1:    //关于
            try{
              genAboutScr();
            }catch(Exception e){}
            break;
          case 2:    //退出
            MIDletExit();
            break;
          default:
            displayAlert(ERROR,"未知的命令错误,请和作者联系!",mainScr);
        }
      }
    }else if(d==aboutScr){
          if(c==cmdBack){
            //返回主选单
            genMainScr();
          }
    }else if(d==TestScr){
          if (c==cmdTest){
            //测算结果屏
            genResultScr();
          }
    }else if(d==ResultScr){
      if(c==cmdAgain){
          //从结果屏返回
          genMainScr();
        }
    }
  }
  
  
  /**
   *返回结果
   */
  private void genResultScr(){
    String info;
    Calendar cal;
    Date r;
    
    r=Dateadd(df_pTime.getDate(),Integer.parseInt( tf_Num.getString()));

    info="下次月经时间为:\n"+dateTostr(r);

    ResultScr=new Form("测算结果");
    ResultScr.append(info);
    ResultScr.addCommand(cmdAgain);
    ResultScr.setCommandListener(this);
    Display.getDisplay(this).setCurrent(ResultScr);
  }
  
  public void itemStateChanged(Item item){

  }
  
  private Date Dateadd(Date d,int days){
    int Year,Month,Month2,Month_r,Day,Day2,Day_r,i;
    boolean rYear;
    int DayOfMonths[]={31,28,31,30,31,30,31,31,30,31,30,31};
    Calendar cal;
//传到手T628上后,下面这句会导致程序崩溃
    cal=Calendar.getInstance();
    cal.setTimeFood;
    Year=cal.get(Calendar.YEAR);
    Month=cal.get(Calendar.MONTH);
    Day=cal.get(Calendar.DAY_OF_MONTH);
    
    Day2=Day+days;
    
    //判断是否为闰年
    if (( Year % 4 == 0 && Year % 100 != 0)||Year % 400 == 0) {
      rYear=true;
    }else{
      rYear=false;
    }
    
    //如果是闰年,2月份就是29天否则是28天
    if (rYear){
      DayOfMonths[1]=29;
    }else{
      DayOfMonths[1]=28;
    }
    
    //跨度为几个月,请求出结果月
    i=0;
    while (true){
      if ((Month+i)>11){
        Month=1;
        i=0;
        Year++;
      }
      Day_r=Day2;
      Day2=Day2-DayOfMonths[Month+i];
      if (Day2<0){
        Month_r=Month+i+1;
        break;
      }else{
        i++;
      }
    }
    
    cal.set(cal.YEAR,Year);
    cal.set(cal.MONTH,Month_r);
    cal.set(cal.DAY_OF_MONTH,Day_r);
    
    return cal.getTime();
  }
  

/**
* 将日期型转换为字符串
* @param dateVal
* @return
*/
private String dateTostr(Date dateVal)

{
Calendar calendar = Calendar.getInstance();
//传到手T628上后,下面这句会导致程序崩溃
calendar.setTime(dateVal);

String strDate = Integer.toString (calendar.get(calendar.DAY_OF_MONTH));

String strMonth = Integer.toString (calendar.get(calendar.MONTH)+1);
String strYear = Integer.toString (calendar.get(calendar.YEAR));

return strYear + "年" + strMonth + "月" + strDate + "日";

}

}




话题树型展开
人气 标题 作者 字数 发贴时间
8182 J2ME编程测试 booolee 45 2005-01-14 18:08
6411 Re:J2ME编程测试 booolee 5 2005-01-14 18:09
7266 Re:J2ME编程测试 booolee 6972 2005-01-14 18:11

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923