转载:http://p.blog.csdn.net/images/p_blog_csdn_net/pjw100/EntryImages/20091123/lwuit_0002.jpg
当我们加载某一个Form页面时,如果这个页面内容较多,加载需要一定的时间,那我们就希望做一个等待的画面,比如"某某正在加载,请等待...",在这个画面中以动态效果来说为最好,用户也知道需要等待很短的时间。我做等待界面有两种方法:首先是方法一,这种方法属于文字等待,就是在界面上画一串文字,"..."是以动态的形式显示,代码如下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import com.sun.lwuit.Font;
import com.sun.lwuit.Form;
import com.sun.lwuit.Graphics;
import com.sun.lwuit.Image;
import com.sun.lwuit.Label;
import com.sun.lwuit.layouts.BorderLayout;
import java.io.IOException;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
/**
*
* @author Administrator
*/
public class TextLoading extends Form implements Runnable {
private Timer timer = new Timer();
private long displayTime = 1000;
private StringBuffer loading = new StringBuffer("Saleslion is loading");
public TextLoading() {
Thread t = new Thread(this);
t.start();
this.setLayout(new BorderLayout());
this.show();
}
public void paint(Graphics g) {
try {
Image wait = Image.createImage("/logo.png");
//绘制logo
g.drawImage(wait, (getWidth() - wait.getWidth()) / 2, (getHeight() - wait.getHeight()- 70) / 2);
g.setColor(0xffffff);
Font fnt = Font.createSystemFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN, Font.SIZE_LARGE);
g.setFont(fnt);
int wordWidth = fnt.stringWidth("Saleslion is loading...");
//绘制等待字符串
g.drawString(loading.toString(), (getWidth() - wordWidth) / 2, (getHeight() + wait.getHeight() -60) / 2);
} catch (IOException ex) {
ex.printStackTrace();
}
}
private void disappear() {
timer.cancel();
try {
new LoginForm();
} catch (IOException ex) {
ex.printStackTrace();
}
}
//调用TimerTask,时间到了后,调用disappear(),当前画面消失,跳至另一个Form
protected void showNotify() {
timer.schedule(new TimerTask() {
public void run() {
disappear();
}
}, displayTime);
}
//设置字符串
public void setLoading() {
if (loading.toString().indexOf("...") > 0) {
loading.delete(loading.length() - 3, loading.length());
}
}
public void run() {
while (true) {
try {
//调用线程来绘制字符串
Thread.sleep(500);
setLoading();
loading.append(".");
} catch (Exception e) {
}
repaint();
}
}
}
以上代码比较简单,也不做多的解释,它是基于Form的。
但是这并不是我想要的效果,假如在一个九宫格中,我点击某一格时,我希望出现一个loading画面显示正在加载这一项,但是以遮罩的形式显示(就像web开发里面弹出的遮罩层对话框一样),也就是说,弹出loading时,我仍然能够见到原来的九宫格画面。我要的效果如下图:
如果要实现这种形式的loading画面,只有通过Dialog类来实现。
制作这种Dialog有几个小问题需要解决:
1.lwuit中如何显示gif动画
2.Dialog全透明
3.Dialog自动释放
一直没有实现这个效果,关键是问题1,但是在上一节 我已经解决了,下面就看关键代码,代码仍然很简单:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.thinkrace.UCHome.ui;
import com.sun.lwuit.Dialog;
import com.sun.lwuit.Display;
import com.sun.lwuit.Image;
import com.sun.lwuit.Label;
import com.sun.lwuit.util.Resources;
import java.io.IOException;
/**
*
* @author Administrator
*/
public class LoadingDialog extends Dialog {
public LoadingDialog() {
try {
//设置对话框全透明
for (int i = 0; i < getComponentCount(); i++) {
getComponentAt(i).getStyle().setBgTransparency(0);
}
Image icon = Resources.open("/resources.res").getImage("loading.gif");
Label l = new Label(icon);
l.getStyle().setBgTransparency(0);
addComponent(l);
int w = Display.getInstance().getDisplayWidth();
int h = Display.getInstance().getDisplayHeight();
int top = (h - icon.getHeight()) / 2 - 10;
int left = (w - icon.getWidth()) / 2 - 10;
setTimeout(3000);
show(top,top,left,left,false);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
分享到:
相关推荐
在LWUIT中,可以使用布局管理器来安排组件的位置,9宫格布局是一种常见的界面设计,常用于展示图片、按钮或其他交互元素的网格。 知识点详解: 1. **LWUIT组件**:LWUIT提供了丰富的UI组件,如按钮、文本框、标签...
LWUIT( Lightweight UI Toolkit )是Java ME(J2ME)平台上的一种用户界面库,专为移动设备设计,提供了一种轻量级、高性能的界面构建工具。它旨在简化和美化在移动设备上的应用程序开发,使开发者能够创建具有丰富...
LWUIT( Lightweight UI Toolkit)是Java ME平台上用于构建用户界面的一个开源库,它提供了丰富的组件和动画效果,使得在移动设备上创建美观且交互性强的界面变得可能。Eclipse是一款广泛使用的集成开发环境(IDE)...
**LWUIT(Lightweight User Interface Toolkit)**是Java ME平台上的一个开源用户界面库,主要用于创建具有丰富图形效果和交互性的移动应用。这个库在早期的Java ME开发中非常流行,因为它允许开发者构建出与桌面...
LWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jar
由于文档部分是通过OCR扫描的,可能存在识别错误或遗漏,但根据上下文可以理解为开发者在创建LWUIT主题商店时需要设计用户友好的界面,并通过网络请求从服务器获取主题数据,然后以一种直观和易用的方式展示给用户,...
这个"lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo"压缩包包含的是LWUIT库的示例源代码,对于学习和理解LWUIT的使用方法非常有帮助。 LWUIT的主要目标是提供一套轻量级的UI组件,使得开发者能够在资源...
LWUIT( Lightweight UI Toolkit)是Java ME(J2ME)平台上的一款强大的用户界面(UI)框架,专门针对移动设备的资源限制而设计。LWUIT 提供了丰富的组件和可定制的外观,使得开发者能够创建出具有吸引力、功能丰富...
LWUIT( Lightweight UI Toolkit )是Java ME(J2ME)平台上的一种用户界面库,专为移动设备设计,用于创建美观且交互性强的图形用户界面。标题中的"lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫"表明这是一个与...
本文主要探讨的是LWUIT( Lightweight User Interface Toolkit )的开发技术,LWUIT是Java ME平台上的一款轻量级用户界面库,用于创建美观、功能丰富的移动应用程序。LWUIT提供了一套丰富的组件和样式机制,使得...
了解它的属性和方法,有助于理解LWUIT的基本操作。 - **Layout管理器**:LWUIT提供了一些布局管理器,如FlowLayout、BoxLayout和GridBagLayout等,它们负责组件在容器中的排列和对齐。 - **Form类**:作为LWUIT中...
本项目为j2me实现的记事本程序,包括新建 保存 读取 修改 等功能,内建lwuit类库,实现了aero效果。(本项目创建平台为NetBeans6.8)
**标签“LWUIT j2me UI例子 制作漂亮的UI例子”** 强调了LWUIT在J2ME平台上的应用以及创建美观界面的重要性。这些标签可能关联着一个项目或教程,旨在帮助开发者学习和掌握LWUIT的UI设计技巧。 在**压缩包子文件的...
LWUIT 1.4 是一个轻量级用户界面工具包(Lightweight User Interface Toolkit),专为Java ME(J2ME)平台设计,用于构建功能丰富的移动应用程序。这个版本的LWUIT引入了一个名为HTMLComponent的新组件,极大地扩展...
LWUIT( Lightweight UI Toolkit )是Java ME平台上的一个开源UI框架,它提供了一种高效、可定制的用户界面组件库,使得开发者能够在移动设备上创建丰富的图形用户界面。在描述中提到的"九宫格界面"是一种常见的UI...
LWUIT( Lightweight UI Toolkit)是Java ME平台上用于构建用户界面的一个开源库,它提供了丰富的UI组件和动画效果,使得开发者能够创建出具有吸引力且功能强大的移动应用。J2ME,全称Java 2 Micro Edition,是Java...
在LWUIT中,表格(Table)和树形视图(Tree)是两种重要的UI组件,它们在数据展示和交互中起到关键作用。 1. 表格(Table)组件: 表格组件允许开发者以行和列的形式展示数据,常用于显示结构化的信息。在LWUIT中...
在Java ME环境中,除了LWUIT之外,开发者还有其他几种选择来构建用户界面: 1. **LCDUI(Limited Capability Display User Interface)**:这是Java ME自带的基本用户界面库,虽然功能较为简单,但对于简单的应用...