📄 gaugealertdemo.java
字号:
/*
* GaugeAlertDemo.java
*
* Created on 2005年4月20日, 上午11:22
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
*
* @author Liu Bin
* @version
*/
public class GaugeAlertDemo extends MIDlet implements CommandListener {
private Display display;
//定义使用的命令按钮
private Command cmdExit;
private Command cmdRunTimeout;
private Command cmdRunForever;
private Form form;
private GaugeAlert alert;
public GaugeAlertDemo() {
try {
nbInit();
} catch(Exception e) {
e.printStackTrace();
}
}
private void nbInit() throws Exception {
cmdExit = new Command("退出",Command.EXIT,1);
cmdRunTimeout =new Command("超时运行",Command.SCREEN,2);
cmdRunForever =new Command("永远运行",Command.SCREEN,2);
form = new Form("在Alert中使用Gauge");
form.append("请选择菜单命令执行演示");
form.addCommand(cmdExit);
form.addCommand(cmdRunTimeout);
form.addCommand(cmdRunForever);
form.setCommandListener(this);
}
protected void startApp( ) throws MIDletStateChangeException {
display = Display.getDisplay(this);
display.setCurrent(this.form);
}
protected void pauseApp( ) {
}
protected void destroyApp( boolean p1 ) {
notifyDestroyed();
}
/**
* 处理命令按钮事件
*/
public void commandAction(Command c,Displayable d) {
if (c ==cmdExit) {
destroyApp(false);
notifyDestroyed();
}
//显示不会自动消失的警告窗口
if (c == cmdRunForever) {
alert = new GaugeAlert("不会自动消失的警告窗口演示",
"数据传输中...", null,null,Alert.FOREVER);
Display.getDisplay(this).setCurrent(alert, form);
}
//显示5秒钟自动消失的警告窗口
if (c == cmdRunTimeout) {
alert = new GaugeAlert("5秒钟自动消失的警告窗口演示",
"数据传输中...", null,null, 5000);
Display.getDisplay(this).setCurrent(alert, form);
}
if(c ==Alert.DISMISS_COMMAND) {//处理警告窗口退出的命令
//必须手工设置当前需要显示的对象
Display.getDisplay(this).setCurrent(form);
alert = null;
}
}
}
class GaugeAlert extends Alert {
private int updatePeriod;
/**
* 构造函数
* <p>
* @param title Alert的标题
* @param timeout:自动消失超时时间,以毫秒计算
*/
public GaugeAlert(String title, int timeout) {
this(title, null, null, null, timeout);
}
/**
* 构造函数
* <p>
* @param title Alert的标题
* @param alertText Alert的内容
* @param alertImage alert的Image图像
* @param alertType alert的类型
* @param timeout 自动消失超时时间,以毫秒计算
*/
public GaugeAlert(String title, String alertText, Image alertImage,
AlertType alertType, int timeout) {
super(title, alertText, alertImage, alertType);
//设置超时自动消失的时间
setTimeout(timeout);
//创建进度条并把进度条添加到警告窗口中
Gauge gauge = createIndicator(timeout);
setIndicator(gauge);
}
//创建进度条
private Gauge createIndicator(final int maxValue) {
//如果警告窗口是永远显示的,
//就创建一个在CONTINUOUS_RUNNING状态的无范围非交互Gauge
if (maxValue == Alert.FOREVER) {
Gauge gag = new Gauge(null, false, Gauge.INDEFINITE,
Gauge.CONTINUOUS_RUNNING);
return gag;
}
final int step = maxValue>100?maxValue/100:1;
final Gauge indicator = new Gauge(null, false, maxValue, 0);
new Thread() {//创建一个定时更新进度的线程
public void run() {
int value = 0;
while (value < maxValue) {//每次将当前进度增加一
indicator.setValue(value);
value += step;
try {
Thread.sleep(step);
} catch (Exception e) {
}
}
}
}.start();
return indicator;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -