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

📄 gaugealertdemo.java

📁 人民邮电出版社的《J2ME手机开发入门》全部源代码
💻 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 + -