本文来自:http://blog.youkuaiyun.com/hellogv/ ,转载必须注明出处!
本文的源代码,已放到 http://download.youkuaiyun.com/user/hellogv 供大家下载!
首先,想让大家看看九宫图实现之后的界面:

本文所用的代码,是来自LWUIT所提供的Sample例子,但是对例子做出以下修改:
1.设计自主的res资源文件
2.把builde.xml里面的<target name="post-compile"> 。。。。。</target> 删除
3.把所用的res文件放到一个名为res的文件夹,并与源代码放在一起
4.把ResourceBuilder.jar也删除,util文件夹里的ResourceBuilder.jar绝对不能删,是用于设计res文件
针对以上4点,说明一下为什么这么做:
原Sample例子的res文件,是使用util文件夹里的ResourceEdit.exe设计,而且还在builde.xml中使用ResourceBuilder.jar再重新生成一次res文件并与源文件组合,这显然有点冗余,因为直接用ResourceEdit.exe设计的res文件放到源文件目录里即可。也许Sample作者直接使用ANT编译或者是其他IDE要求,本文所用的IDE为netbeans。
OK,接下来就是源代码修改了,Sample源代码可是写得很长很长,要看也得花不少时间,但是,我保证大家看完后一定领略到JAVA大牛的编程功力之深!!!为了方便以后使用,所以我把Sample中实现九宫图和一些小操作的代码保留,其他都去掉了,请JAVA大牛切勿见笑哈。
以下给出关键代码:
好了,本文就介绍到这里,关于J2ME LWUIT的摸索还在继续,希望大家多多支持LWUIT,让它越做越好!
本文的源代码,已放到 http://download.youkuaiyun.com/user/hellogv 供大家下载!
首先,想让大家看看九宫图实现之后的界面:

本文所用的代码,是来自LWUIT所提供的Sample例子,但是对例子做出以下修改:
1.设计自主的res资源文件
2.把builde.xml里面的<target name="post-compile"> 。。。。。</target> 删除
3.把所用的res文件放到一个名为res的文件夹,并与源代码放在一起
4.把ResourceBuilder.jar也删除,util文件夹里的ResourceBuilder.jar绝对不能删,是用于设计res文件
针对以上4点,说明一下为什么这么做:
原Sample例子的res文件,是使用util文件夹里的ResourceEdit.exe设计,而且还在builde.xml中使用ResourceBuilder.jar再重新生成一次res文件并与源文件组合,这显然有点冗余,因为直接用ResourceEdit.exe设计的res文件放到源文件目录里即可。也许Sample作者直接使用ANT编译或者是其他IDE要求,本文所用的IDE为netbeans。
OK,接下来就是源代码修改了,Sample源代码可是写得很长很长,要看也得花不少时间,但是,我保证大家看完后一定领略到JAVA大牛的编程功力之深!!!为了方便以后使用,所以我把Sample中实现九宫图和一些小操作的代码保留,其他都去掉了,请JAVA大牛切勿见笑哈。
以下给出关键代码:
- /*
- *Copyright?2008SunMicrosystems,Inc.Allrightsreserved.
- *Useissubjecttolicenseterms.
- *
- */
- packagecom.sun.lwuit.uidemo;
- importcom.sun.lwuit.Button;
- importcom.sun.lwuit.animations.CommonTransitions;
- importcom.sun.lwuit.Command;
- importcom.sun.lwuit.Component;
- importcom.sun.lwuit.Dialog;
- importcom.sun.lwuit.Display;
- importcom.sun.lwuit.Form;
- importcom.sun.lwuit.Image;
- importcom.sun.lwuit.Label;
- importcom.sun.lwuit.animations.Transition;
- importcom.sun.lwuit.animations.Transition3D;
- importcom.sun.lwuit.events.ActionEvent;
- importcom.sun.lwuit.events.ActionListener;
- importcom.sun.lwuit.events.FocusListener;
- importcom.sun.lwuit.layouts.GridLayout;
- importcom.sun.lwuit.plaf.Style;
- importcom.sun.lwuit.plaf.UIManager;
- importcom.sun.lwuit.util.Resources;
- publicclassUIDemoMIDletextendsjavax.microedition.midlet.MIDletimplementsActionListener{
- privatestaticfinalCommandexitCommand=newCommand("Exit",1);
- privateString[]btn_name=newString[]{//九宫图的名称,同时也是图标的名称
- "Image1","Image2","Image3","Image4","Image5","Image6","Image7",
- "Image8","Image9"
- };
- privatestaticTransitioncomponentTransitions;
- privatestaticFormmainMenu;//主窗体
- privateintcols;
- privateintelementWidth;
- protectedvoidstartApp(){
- try{
- Display.init(this);
- Resourcesr=Resources.open("/res/resources.res");//读取资源文件
- setMainForm(r);
- }catch(Throwableex){
- ex.printStackTrace();
- Dialog.show("Exception",ex.getMessage(),"OK",null);//hellogv最爱的提示框弹出方式
- }
- }
- protectedvoidpauseApp(){
- }
- protectedvoiddestroyApp(booleanarg0){
- }
- publicstaticvoidsetMenuTransition(Transitionin,Transitionout){
- mainMenu.setMenuTransitions(in,out);
- UIManager.getInstance().getLookAndFeel().setDefaultMenuTransitionIn(in);
- UIManager.getInstance().getLookAndFeel().setDefaultMenuTransitionOut(out);
- }
- publicstaticvoidsetComponentTransition(Transitiont){
- componentTransitions=t;
- mainMenu.setSmoothScrolling(false);
- }
- publicstaticTransitiongetComponentTransition(){
- returncomponentTransitions;
- }
- publicstaticvoidbackToMainMenu(){
- mainMenu.refreshTheme();
- mainMenu.show();
- //forseries40devices
- System.gc();
- System.gc();
- }
- privatevoidsetMainForm(Resourcesr){
- //设置主题
- UIManager.getInstance().setThemeProps(r.getTheme("businessTheme"));
- mainMenu=newMainScreenForm("LWUITDemo");
- intwidth=Display.getInstance().getDisplayWidth();//取得全屏的宽度
- elementWidth=0;
- //效果,可以实现类似IPhone、S1智能机的TouchFlo的动态窗体切换效果!**********************
- mainMenu.setTransitionOutAnimator(CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL,false,500));
- mainMenu.setTransitionInAnimator(CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL,true,500));
- UIDemoMIDlet.setComponentTransition(Transition3D.createCube(600,false));
- //***************************************************************************************************************
- Image[]selectedImages=newImage[btn_name.length];//按钮被选中时的图片
- Image[]unselectedImages=newImage[btn_name.length];//按钮未被选中的图片
- for(inti=0;i<btn_name.length;i++){
- //---------读取选中时的图片
- selectedImages[i]=r.getImage(btn_name[i]);
- //--------读取未被选中的图片
- unselectedImages[i]=r.getImage(btn_name[i]);
- finalButtonbutton=newButton(btn_name[i],unselectedImages[i])
- {
- publicImagegetPressedIcon(){
- Imagei=getIcon();
- returni.scaled((int)(i.getWidth()*0.8),(int)(i.getHeight()*0.8));
- }
- };
- button.setRolloverIcon(selectedImages[i]);
- Styles=button.getStyle();
- s.setBorder(null);
- s.setBgTransparency(0);
- s.setBgSelectionColor(0xffffff);
- button.setAlignment(Label.CENTER);
- button.setTextPosition(Label.BOTTOM);
- mainMenu.addComponent(button);
- button.addActionListener(this);
- //按钮焦点处理,用于实现按钮特效
- button.addFocusListener(newFocusListener(){
- publicvoidfocusGained(Componentcmp){//按钮取得焦点时的特效
- if(componentTransitions!=null){
- mainMenu.replace(button,button,componentTransitions);
- }
- }
- publicvoidfocusLost(Componentcmp){}//按钮失去焦点时的特效
- });
- elementWidth=Math.max(button.getPreferredW(),elementWidth);
- }
- cols=width/elementWidth;
- introws=btn_name.length/cols;
- mainMenu.setLayout(newGridLayout(rows,cols));//GridLayout为九宫图的排列方式
- mainMenu.addCommand(exitCommand);
- mainMenu.setCommandListener(this);
- mainMenu.show();
- }
- /**
- *控件处理函数
- */
- publicvoidactionPerformed(ActionEventevt){
- try{//通过异常处理来判断事件来源
- Commandcmd=evt.getCommand();
- if(cmd.getCommandName().equals("Exit"))
- notifyDestroyed();
- }catch(Exceptione)
- {
- Stringsel_button=((Button)(evt.getSource())).getText();//取得所选按钮的名称
- if(sel_button.equals("Image1"))
- newAnimationDemo().form.show();
- elseif(sel_button.equals("Image2"))
- newPaintingDemo().form.show();
- elseif(sel_button.equals("Image3"))
- newLayoutDemo().form.show();
- }
- }
- }
好了,本文就介绍到这里,关于J2ME LWUIT的摸索还在继续,希望大家多多支持LWUIT,让它越做越好!