`
wangxc
  • 浏览: 213010 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lwuit实现九宫图特效程序

    博客分类:
  • J2ME
SUN 
阅读更多
最近在网上看到很多九宫图的程序说明,但大多数是转载的,一些知识点的地方对于初学者来说还是比较难懂的,我在原来的程序上修改了一下,也加了一些注释,希望对大家有所帮助吧!

程序截图                              
     

package com.mopietek;

import java.io.IOException;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import com.sun.lwuit.Button;
import com.sun.lwuit.Command;
import com.sun.lwuit.Component;
import com.sun.lwuit.Dialog;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.Image;
import com.sun.lwuit.Label;
import com.sun.lwuit.animations.CommonTransitions;
import com.sun.lwuit.animations.Transition;
import com.sun.lwuit.animations.Transition3D;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.events.FocusListener;
import com.sun.lwuit.layouts.GridLayout;
import com.sun.lwuit.plaf.Style;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;

public class UIDemoMIDlet extends MIDlet implements ActionListener{

	public static Command exitCommand = new Command("exit",1);
	//设置九宫图图标的名称
	private  String[] button_name = new String[]{"Image 1","Image 2","Image 3","Image 4","Image 5","Image 6","Image 7","Image 8","Image 9"};
	
	private static Transition componentTransition;
	private  static Form mainForm; //主窗体
	
	private  int cols;
	private  int elementWidth;
	
	public static Transition getComponentTransition() {
		return componentTransition;
	}

	public static void setComponentTransition(Transition componentTransition) {
		
		UIDemoMIDlet.componentTransition = componentTransition;
		//设置主窗体动画效果为false
		mainForm.setSmoothScrolling(false);
	}

	protected void startApp() throws MIDletStateChangeException {
		
		Display.init(this);
		try {
			Resources res = Resources.open("/resources.res");
			MainForm(res);
		} catch (IOException e) {
			e.printStackTrace();
			Dialog.show("Exception", e.getMessage(), "OK",null);
		}
	}
	
	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
		// TODO Auto-generated method stub
		
	}

	protected void pauseApp() {
		// TODO Auto-generated method stub
		
	}

	public void MainForm(Resources r){
		
		UIManager.getInstance().setThemeProps(r.getTheme("businessTheme"));
		mainForm = new Form("九宫图主窗体");
		//主窗体的宽度
		int width = Display.getInstance().getDisplayWidth();
		elementWidth = 0;
		
		//实现按钮3D翻转效果
		mainForm.setTransitionOutAnimator(CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL, false, 500));
		mainForm.setTransitionInAnimator(CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL, true, 500));
		UIDemoMIDlet.setComponentTransition(Transition3D.createCube(400, false));
		
		//定义按钮选中时的图片
		Image [] selectedImages = new Image[button_name.length];
		//定义未m被选中时的图片
		Image [] unselectedImages = new Image[button_name.length];
		
		for(int i=0;i<button_name.length;i++){
			// 读取选中时的图片
			selectedImages[i] = r.getImage(button_name[i]);
			//读取未被选中时的图片
			unselectedImages[i] = r.getImage(button_name[i]);
			
//			final Button button = new Button(button_name[i],unselectedImages[i]){
			final Button button = new Button("图标"+(i+1),unselectedImages[i]){
				//当鼠标按下时图标变小的动画效果
				public Image getPressedIcon(){
					Image i = getIcon();
					//按钮图标缩小为原来的0.8倍
					return i.scaled((int) (i.getWidth()*0.8), (int)(i.getHeight()*0.8));
				}
				
			};
			//设置按钮翻转
			button.setRolloverIcon(selectedImages[i]);
			//得到按钮的风格
			Style s = button.getStyle();
			s.setBorder(null);
			s.setBgTransparency(0);
			s.setBgColor(0xffffff);
			button.setAlignment(Label.CENTER); //对齐方式
			button.setTextPosition(Label.BOTTOM);
			mainForm.addComponent(button);
			button.addActionListener(this);
			
			//按钮焦点处理,用于实现按钮特效
			button.addFocusListener(new FocusListener(){
                 //按钮得到焦点时的特效(事件)处理
				public void focusGained(Component cmp) {
					
					if(componentTransition != null){
						mainForm.replace(button, button, componentTransition);
					}
				}
				//按钮失去焦点时的特效(事件)处理
				public void focusLost(Component arg0) {
					
				}
			
			});
			
			elementWidth = Math.max(button.getPreferredW(), elementWidth);
		}
		
		cols = width / elementWidth;
		int rows = button_name.length / cols;
		mainForm.setLayout(new GridLayout(rows,cols));
		mainForm.addCommand(exitCommand);
		
		mainForm.setCommandListener(this);
		mainForm.show();
		
		
	}
	
	

	public static Form getMainForm() {
		return mainForm;
	}

	public static void setMainForm(Form mainForm) {
		UIDemoMIDlet.mainForm = mainForm;
	}

	public void actionPerformed(ActionEvent evt) {

		if(evt.getCommand() == exitCommand){
			this.notifyDestroyed();
		}
		
	}

}


关于资源文件可以在附加中下载
LwuitDemo7.jar文件是实例,大家可以下载测试一下,看看有哪些款式机子不支持,小弟在此谢过各位啦!
  • 大小: 25.8 KB
  • 大小: 22.3 KB
分享到:
评论
1 楼 hr1234hr 2011-03-30  
请问lWTUI中如何使用中文呢?
我按照你的.res文件,把LWTUIDemo中的英文字体全部换成了monospace,然后删除了那些自定义的字体,可是在模拟器中运行时,仍然不能显示中文,全部是问号,是怎么回事呢?
代码里面有一句
UIManager.getInstance().setResourceBundle(r.getL10N("localize", "en"));


我注释掉了这句,还是应该设置成中文?

相关推荐

    J2ME LWUIT 之九宫图

    标题“J2ME LWUIT 之九宫图”指的是使用LWUIT库在J2ME平台上实现一个类似于iPhone上的九宫格布局的界面。九宫图通常是一种常见的布局方式,用于展示多个相互关联的小模块或应用图标,用户可以通过点击这些图标来启动...

    lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫

    标题中的"lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫"表明这是一个与LWUIT相关的压缩包,内容可能包含了实现J2ME平台上九宫图功能的代码或资源。 九宫图是一种常见的界面布局方式,通常用于显示多个小视图,如...

    LwuitDemoDemo关于九宫图以及其它的实现方法Demo

    标题中的“LwuitDemoDemo关于九宫图以及其它的实现方法Demo”表明这是一个使用LWUIT(Lightweight User Interface Toolkit)框架实现的演示程序,其中包含了九宫格布局以及其他图形展示方式的示例代码。LWUIT是Java ...

    Lwuit入门程序测试一下Demo

    在“Lwuit入门程序测试一下Demo”中,我们将探讨如何使用LWUIT库来创建简单的应用程序,并通过“LocationDemo1”文件了解其实际应用。 **LWUIT的特点:** 1. **轻量级**:LWUIT设计时考虑了资源有限的移动设备,...

    Lwuit一些简单测试小应用程序Demo

    6. **多媒体支持**:LWUIT支持音频、视频的播放,以及图片的显示,可以方便地集成到应用程序中。 在"**LwuitDemo5**"这个文件中,我们可能看到以下几个方面的示例: 1. **基本组件使用**:展示如何创建和配置按钮...

    最新LWUIT_1_5

    3. **动画和过渡效果**:LWUIT支持动画和过渡效果,可以轻松实现组件的滑动、淡入淡出等动态效果,从而增强用户界面的吸引力。 4. **资源管理**:LWUIT包含一个资源管理器,用于处理图像、音频、视频等媒体资源,...

    真正用lwuit实现调用调用谷歌天气预报

    网上还真的没有用lwuit这个包调用谷歌天气预报的程序,但我的事真正用到lwuit这个包!!

    LWUIT j2me UI例子

    其次,“九宫图”通常指的是一个布局示例,其中九个元素均匀分布在网格中,这可以用来展示LWUIT的布局管理器如何工作,如GridLayout或者 BorderLayout等。UIManager是LWUIT中的核心类,用于管理全局的UI样式和行为,...

    lwuit实例 lwuit j2me 界面

    文件名称“LWUIT_9宫图”可能是一个LWUIT的实例,展示了如何使用该库创建一个9宫格布局的界面。在LWUIT中,可以使用布局管理器来安排组件的位置,9宫格布局是一种常见的界面设计,常用于展示图片、按钮或其他交互...

    Hello LWUIT——LWUIT开发指南1

    LWUIT的核心优势在于其可定制性,开发者可以通过自定义主题来改变应用的整体外观和感觉,实现与设备原生界面风格的统一。LWUIT支持多种设备和操作系统,包括J2ME、Symbian、Blackberry等,这使得开发者可以编写一次...

    lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo

    "lwuit_demo"则是LWUIT的演示程序,通常包含各种预设的UI场景和交互效果,开发者可以通过运行这些示例来直观地了解LWUIT的能力。 在"src"文件夹中,我们可以期待找到LWUIT示例的Java源代码。这些代码通常会包含类、...

    LWUIT.jar LWUIT.jar

    LWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jar

    lwuit 开发文档

    该应用程序的用户界面设计和交互逻辑通过各个屏幕组件来实现。 1. 主屏幕(MainScreen) - 主屏幕允许用户选择主题类别。主题类别由操作员预先定义,并非动态生成。用户选择某一个类别后,客户端将与服务器通信,...

    LWUIT1.3code.rar_LWUIT

    2. **主题定制**:LWUIT 强调可定制性,允许开发者通过修改XML配置文件轻松改变应用的主题,包括颜色、字体、布局等,从而实现个性化界面设计。 3. **设备适配**:考虑到J2ME跨平台的特性,LWUIT 提供了设备适配层...

    LWUIT1.2-src

    3. **BUG修复**:针对之前版本中出现的问题,LWUIT 1.2进行了大量错误修复,确保了程序的稳定性和可靠性,减少了运行时出现问题的可能性。 4. **性能提升**:新版本可能优化了底层代码,提升了运行效率,使得LWUIT...

    Hello LWUIT——LWUIT开发指南2

    LWUIT(Lightweight User Interface Toolkit)是Java ME平台上的一个开源用户界面库,它为开发者提供了丰富的UI组件和强大的设计工具,使得在移动设备上创建美观、交互性强的应用程序变得更加简单。这篇开发指南将...

    LWUIT Developer_Guide

    2. **主题和样式**:LWUIT引入了主题的概念,允许开发者通过XML文件定义全局样式,实现应用程序界面的一致性和美观性。主题可以涵盖颜色、字体、边框等元素,使得UI的个性化设计变得更加简单。 3. **动画支持**:...

Global site tag (gtag.js) - Google Analytics