⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.java

📁 J2me实现的MSN Messeger客户端程序。聊天、添加好友、删除好友、阻止好友
💻 JAVA
字号:
package vitular.ui;

import java.util.*;
import javax.microedition.lcdui.*;


/**
 * 工具类,(静态函数)
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class Util extends Object{

  /**
   *得分一个字符串小字体的绘画长度
   */
  public static int getStrWidth(String str) {
    int w = 0;
    Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL);
    if (str == null) {
      w = 0;
    }
    else {
      w = font.stringWidth(str);
    }
    return w;
  }

  /**
   *得分一个字符串的绘画长度
   */
  public static int getStrWidth(String str, int FontSize) {
    int w = 0;
    Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, FontSize);
    if (str == null) {
      w = 0;
    }
    else {
      w = font.stringWidth(str);
    }
    return w;
  }

  /**
   * 得到当前字体的高度
   */
  public static int getFontHeight() {
    Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL);
    return font.getHeight();
  }

  /**
   * 得到指定字号的高度
   * @param FontSize int
   * @return int
   */
  public static int getFontHeight(int FontSize) {
    Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, FontSize);
    return font.getHeight();
  }

  /**
   * 取出Str字符串的某个字段值,FieldNo为字段号(起始位置为1),SeparatorChar为字段分隔符
   */
  public static String getField(String str, int fieldNo, String separatorChar) {
    int bi = beginIndexOfField(str, fieldNo, separatorChar);
    if (bi == -1) {
      return str;
    }
    int ei = endIndexOfField(str, fieldNo, separatorChar);
    return str.substring(bi, ei);
  }

  /**
   *字段的开始位置,如果超出范围,返回-1
   */
  public static int beginIndexOfField(String f, int n, String separatorChar) {
    if (n < 1) {
      return -1;
    }
    else if (n == 1) {
      return 0;
    }
    else {
      int j = 0;
      int i = 1;
      while (true) {
        j = f.indexOf(separatorChar, j);
        i++;
        if (j == -1) {
          return -1;
        }
        else {
          j += separatorChar.length();
          if (i == n) {
            return j;
          }
        }
      }
    }
  }

  /**
   *字段的结束位置,如果超出范围,返回-1
   */
  public static int endIndexOfField(String f, int n, String separatorChar) { //??
    if (n < 1) {
      return -1;
    }
    else {
      int i = 0;
      int j = 0;
      while (true) {
        j = f.indexOf(separatorChar, j);
        i++;
        if (j == -1) {
          return f.length();
        }
        else {
          if (i == n) {
            return j;
          }
          j += separatorChar.length();
        }
      }
    }
  }

  /**
   *得到试用版本剩余的使用次数,dbName为数据库名字,allTimes为总试用次数
   */
  public static int getTrialTimes(String dbName, int allTimes) {
    RecordDB db = new RecordDB();
    db.open(dbName);
    int times = 0;

    if (db.getNumRecords() == 0) {
      times = allTimes - 1;
      db.addRecord(String.valueOf(times));
    }
    else {
      times = Integer.valueOf(db.getRecord(1)).intValue();
      times--;
      if (times > 0) {
        db.setRecord(1, String.valueOf(times));
      }
    }

    db.close();

    return times;
  }

  /**
   *得到当前日期,chr为数字间的间隔符,如2003-08-31中的'-'
   */
  public static String getDate(String chr) {
    Calendar cal = Calendar.getInstance();
    return cal.get(Calendar.YEAR) + chr + cal.get(Calendar.MONTH) + chr +
        cal.get(Calendar.DATE);
  }

  /**
   *得到当前时间
   */
  public static long getTime() {
    Date d = new Date();
    return d.getTime();
  }

  /**
   *计算时间间隔
   */
  public static int getDays(Date sd, Date ed) {
    return (int) (ed.getTime() - sd.getTime()) / (3600 * 24 * 1000);
  }

  /**
   *得到整数
   */
  public static int toInt(String Value) {
    if (Value.trim().length() == 0) {
      return 0;
    }
    return Integer.valueOf(Value).intValue();
  }

  /**
   * 将数字转成图片显示
   * @param g Graphics
   * @param num int 要画的数字(正数)
   * @param img Image 不包含数字的图片,格式0123456789 每个数字宽度相等
   * @param x int 显示x坐标
   * @param y int 显示y做标
   */
  public static void drawInt(Graphics g, int num, Image img, int x, int y) {
    if (g == null || img == null) {
      return;
    }
    int numWidth = img.getWidth() / 10;
    String strNum = String.valueOf(num);
    String s = null;
    int asc = 0; //对应ascii码
    int offset = 0;

    int i1 = g.getClipX();
    int j1 = g.getClipY();
    int k1 = g.getClipWidth();
    int l1 = g.getClipHeight();

    for (int i = 0; i < strNum.length(); i++) {
      s = strNum.substring(i, i + 1);
      asc = s.hashCode();
      offset = asc - 48; //0 的ascii码48
      int posX = x + i * numWidth;
      g.setClip(posX, y, numWidth, img.getHeight());
      g.drawImage(img, posX - offset * numWidth, y, g.LEFT | g.TOP);
    }

    g.setClip(i1, j1, k1, l1);
  }

  /**
   *
   * @param serverData byte[]
   * @param httpLen int
   * @return String
   */
  public static String toUTF(byte[] serverData, int httpLen) {
    //UTF-8 解码
    String str;
    char[] infoStr = new char[httpLen * 2];

    char ch;
    int i = 0;
    int charCount = 0;

    while (i < httpLen) {
      try {
        if ( (serverData[i] & 0x80) != 0) {
          if ( (serverData[i] & 0x20) != 0) {
            ch = (char) ( (serverData[i] & 0xf) << 12);
            ch += (char) (serverData[i + 1] & 0x3f) << 6;
            ch += serverData[i + 2] & 0x3f;
            i += 3;
          }
          else {
            ch = (char) ( (serverData[i] & 0x1f) << 6);
            ch += serverData[i + 1] & 0x3f;
            i += 2;
          }
        }
        else {
          ch = (char) serverData[i];
          i++;
        }
        infoStr[charCount++] = ch;
      }
      catch (Exception e) {
      }
    }
    return new String(infoStr, 1, charCount);
  }

  /**
   * 得到第index个子串,子串之间的分隔符为separator
   * @param str String
   * @param separator char
   * @param index int
   * @return String
   */
  public static String getSubString(String str, char separator, int index){
    int count = 0;
    int begin = 0;
    //int i = 0;
    for (int i = 0; i < str.length(); i++){
      if (str.charAt(i) == separator){
        if (count == index){
          return str.substring(begin, i);
        }
        else{
          count++;
          begin = i+1;
        }
      }
    }
    if (count > 0 && begin < str.length()){
      return str.substring(begin);
    }
    return null;
  }

  /**
   * 取得当前时间
   * @return String
   */
  public static String getCurTime(){
    String time = Calendar.getInstance().MONTH + "-" + Calendar.getInstance().DAY_OF_MONTH
        + " " + Calendar.getInstance().HOUR_OF_DAY + ":" + Calendar.getInstance().MINUTE;
    return time;
  }

  /**
   * 获得指定长度的字符串
   * @param font Font 显示用的字体
   * @param sourceStr String 源字符串
   * @param len int 子串的长度
   * @param endStr String 后缀字符串
   * @return String 合成的字符串
   */
  public static String getShowString(Font font, String sourceStr, int len, String endStr){
    //如果长度足够
    if (font.stringWidth(sourceStr) <= len)
      return sourceStr;

    //后缀的长度
    int endLen = font.stringWidth(endStr);
    int sourceLen = font.stringWidth(sourceStr);
    for (int i = sourceStr.length() - 1; i>=0; i--){
      sourceLen -= font.charWidth(sourceStr.charAt(i));
      if (sourceLen + endLen <= len){
        return sourceStr.substring(0, i) + endStr;
      }
    }
    return "";
  }



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -