📄 util.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 + -