界面.docx
《界面.docx》由会员分享,可在线阅读,更多相关《界面.docx(15页珍藏版)》请在冰豆网上搜索。
界面
J2ME里界面的相互跳转收藏
importjava.util.Stack;
importjavax.microedition.lcdui.Display;
importjavax.microedition.lcdui.Displayable;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
publicclassMidletextendsMIDlet...{
privatestaticMidlet_instance=null;
privateDisplay_display=null;
/***//**
*程序一开始显示的界面
*/
privateLoginForm_loginForm=null;
/***//**
*堆栈,用于存储界面,适用于上下翻页,不适用于跳转到指定的页面
*/
privateStack_uiStack=newStack();
publicMidlet()...{
_instance=this;
_display=Display.getDisplay(this);
_loginForm=newLoginForm(this);
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException...{}
protectedvoidpauseApp()...{}
protectedvoidstartApp()throwsMIDletStateChangeException...{
forward(newLoginList());//跳转到需要显示的界面
}
/***//**
*跳出(不显示)当前的界面
*/
publicstaticvoidjumpBack()...{
_instance._uiStack.pop();
}
/***//**
*返回到上一个界面
*/
publicstaticvoidgoBack()...{
_instance._uiStack.pop();
Objectobj=_instance._uiStack.peek();
_instance._display.setCurrent((Displayable)obj);
}
/***//**
*跳转到下一个界面
*@paramnext要显示的界面
*/
publicstaticvoidforward(Displayablenext)...{
_instance._uiStack.push(next);
_instance._display.setCurrent(next);
}
/***//**
*返回Midlet的实例
*/
publicstaticMidletgetMidlet()...{
return_instance;
}
/***//**
*退出程序
*/
publicvoidquit()...{
try...{
this.destroyApp(true);
this.notifyDestroyed();
}catch(MIDletStateChangeExceptionmce)...{
}
}
}
∙本文来在J2ME中实现游戏功能选择界面(附原始码)
∙来源:
作者:
发布时间:
2007-12-1918:
03:
55
在J2ME游戏中,显示了欢迎界面以后,就应该显示游戏的功能选择界面,实现该界面的方式主要有两种:
1、使用高级用户界面中的List来进行实现2、 使用Canvas类来自己绘制一个功能选择界面为了达到更强的游戏表现效果,经常在研发过程中使用第二种方式来实现游戏功能选择界面。
下面是一种实现了使用Canvas绘制功能选择界面的示例。
实现原理:
在背景图片上绘制游戏的各个功能菜单,然后使用矩形框来代表用户选中的效果,并根据用户的选择实现选择框的上下移动,具体代码如下:
packagewelcomecanvas;
importjavax.microedition.lcdui.*;
publicclassMainCanvasextendsCanvas{ Imageimage=null; /**代表选中项目的索引号码*/ intindex=1;
publicMainCanvas(){ try{ image=Image.createImage("/res/menu.png"); }catch(Exceptione){
} }
protectedvoidpaint(Graphicsg){ //清屏 g.setColor(255,255,255); g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0,0,0);
//绘制图片 g.drawImage(image,0,0,Graphics.TOP|Graphics.LEFT);
//绘制矩形 g.drawRect(39,24+(index-1)*30,100,27); }
protectedvoidkeyPressed(intkeyCode){ //按下的是数字键2 if(keyCode==Canvas.KEY_NUM2){ //判断是否移动到第一个选项 if(index==1){ index=4; }else{ index--; } } //按下的是数字键8 if(keyCode==Canvas.KEY_NUM8){ //判断是否移动到第四个选项 if(index==4){ index=1; }else{ index++; } }
//重新绘制屏幕 repaint();
//如果按下数字键5 if(keyCode==Canvas.KEY_NUM5){ //根据选择的不同显示不同的界面 switch(index){ case1:
break; case2:
break; case3:
break; case4:
CanvasMIDlet.quitApp(); } }
}}
自CSDJ2ME———欢迎界面
2009年04月03日星期五21:
13
欢迎画面就是程序启动的时候首先就要显示的一个欢迎画面,在欢迎界面中显示图片或者其它信息,欢迎界面一边使用在程序的初始化阶段,可能需要用户等待一段时间,也可以用于为增加程序的屏幕效果而编写,此时用户可以通过按下任意键来跳过欢迎界面,欢迎界面程序内设定需要显示的时间到了,也会自动消失。
由于欢迎画面只维持一小段时间,所以需要使用Timer类来控制时间的长短。
一个Timer类其实就是一个定时器,当Timer类定义的时间到了,则运行一个TimerTask类的对象,在TimerTask类的对象中定义了需要执行的代码。
例如,使用Timer定义的500毫秒时间到了,则运行TimerTask对象的接口函数run中的代码:
Timertimer=newTimer();
timer.schedule(newTimerTask(){
publicvidrun(){
//运行相应的任务
}
},500);
由于是欢迎界面,所以当时间到达或者用户按了受检键盘上的任意键的时候应该能够马上切换到程序的主界面,因此需要使用构造函数传递Display对象和主程序的Disaplayable对象。
当需要切换到主程序的时候,使用setCurrent函数马上切换到主程序界面。
Display与Displayable的区别:
Display相当于屏幕;
Displayable则相当于能够在屏幕上显示的控件;
例子:
~编写欢迎画面
WelcomScreen.java
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
/**
*@authorJohnson
*/
publicclassWelcomScreenextendsMIDletimplementsCommandListener{
privateCommandexitCommand;
privateDisplaydisplay=null;
privatebooleanfirstTime=true;
privateTextBoxtb;
publicWelcomScreen(){
exitCommand=newCommand("Exit",Command.EXIT,1);
tb=newTextBox("主程序","主界面!
",15,0);
tb.addCommand(exitCommand);
tb.setCommandListener(this);
display=Display.getDisplay(this);
}
publicvoidstartApp()throwsMIDletStateChangeException{
//WelcomScreen对象只创建一次
if(firstTime){
splashScreenwelcome=newsplashScreen(display,tb);
//设置等待6秒
welcome.setDisplayTime(6000);
display.setCurrent(welcome);
firstTime=false;//不允许出现第二次画面
}
}
publicvoidpauseApp(){
}
publicvoiddestroyApp(booleanunconditional){
}
publicvoidcommandAction(Commandc,Displayabled){
if(c==exitCommand){
destroyApp(false);
notifyDestroyed();
}
}
}
splashScreen.java
importjava.io.IOException;
importjava.util.Timer;
importjava.util.TimerTask;
importjavax.microedition.lcdui.*;
//importjavax.microedition.lcdui.Display;
//importjavax.microedition.lcdui.Displayable;
//importjavax.microedition.lcdui.Graphics;
//importjavax.microedition.lcdui.Image;
/**
*
*@authorJohnson
*/
publicclasssplashScreenextendsCanvas{
privateDisplaydisplay;
privateDisplayablenextDisplay;
privateTimertimer=newTimer();
privatelongdisplayTime=3000;//默认等待三秒
publicsplashScreen(Displaydis,Displayabledisp){
this.display=dis;
this.nextDisplay=disp;
}
protectedvoidpaint(Graphicsg){
//获得屏幕的宽与屏幕的高
intwidth=this.getWidth();
intheight=this.getHeight();
//显示提示信息
g.drawString("欢迎进入!
",0,0,Graphics.TOP|Graphics.LEFT);
ImagedisplayImage=null;
try{
displayImage=Image.createImage("welcome.png");
}catch(IOExceptione){
e.printStackTrace();
}
//居中显示图片
g.drawImage(displayImage,width/2,height/2+displayImage.getHeight()/2,Graphics.BOTTOM|Graphics.HCENTER);
}
publicvoidsetDisplayTime(longdispTime){
this.displayTime=dispTime;
}
protectedvoidkeyPressed(intkeyCode){
disappear();
}
protectedvoidpointerPressed(intx,inty){
disappear();
}
privatevoiddisappear(){
timer.cancel();
display.setCurrent(nextDisplay);
}
protectedvoidshowNotify(){//定时器的任务
timer.schedule(newTimerTask(){
publicvoidrun(){
disappear();
}
},displayTime);
}
}
N博客J2ME学习笔记:
Ticker实现滚动文字效果(原创)
2008-03-2109:
57
Ticker是个特殊的屏幕控件,用于实现文字的滚动,用起来是很简单的,构造方法:
Tickert=newTicker(text);mainForm.setTicker(t);等价于把Ticker添加上了屏幕,那么text就滚了,以下是代码和截图:
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
importjavax.microedition.lcdui.*;
publicclassTickerDemoextendsMIDlet{
privatefinalstaticStringtext="手机世界"+"我的世界";
privateFormmainForm;
publicTickerDemo(){
mainForm=newForm("TerryLoveKatrina");//创建了一个Form对象,就像一个屏幕
}
protectedvoidstartApp()throwsMIDletStateChangeException{
Tickert=newTicker(text);//创建了一个Ticker对象,可以滚动文字了
mainForm.setTicker(t);//等价于把Ticker添加上了屏幕
Display.getDisplay(this).setCurrent(mainForm);//此句很重要,宣布当前display是屏幕。
主“画板”是smainForm
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
}
protectedvoidpauseApp(){
}
}
,转载J2ME欢迎界面代码
J2ME2010-03-1723:
31:
52阅读131评论0字号:
大中小
在网上搜来的,不知道为什么我那里运行有问题,然后改啊改,改成下面的样子。
方法一:
【1】功能
显示欢迎界面,按任意键进入系统,按退出键,退出程序。
【2】代码
文件名:
WelcomeMidlet1.java
packagetest;
importjavax.microedition.lcdui.Alert;
importjavax.microedition.lcdui.AlertType;
importjavax.microedition.lcdui.Canvas;
importjavax.microedition.lcdui.Command;
importjavax.microedition.lcdui.CommandListener;
importjavax.microedition.lcdui.Display;
importjavax.microedition.lcdui.Displayable;
importjavax.microedition.lcdui.Form;
importjavax.microedition.lcdui.Graphics;
importjavax.microedition.lcdui.Image;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
publicclassWelcomeMidlet1extendsMIDletimplementsCommandListener{
privateDisplaydisplay;
privateImagebgImage=null;
privateFormfrm=newForm("Thisisatest.");
privateCommandcmdOk=newCommand("确定",Command.OK,1);
privateCommandcmdExit=newCommand("退出",Command.EXIT,2);
privatebooleanimgexit=true;//图片存在
privateWelcomeCanvaswc=newWelcomeCanvas();
privateAlertAlertError=newAlert("错误","资源文件不存在!
",null,AlertType.ERROR);
//标题、屏幕显示内容、提示图片、错误类型
publicWelcomeMidlet1(){//先初始化欢迎界面的背景图片
try{
bgImage=Image.createImage("/welcome2.gif");//记得换成自己的图片的名字,图片放在res文件夹里
}catch(Exceptione){
e.printStackTrace();
System.out.println("IOException错误,图片文件不存在~");
imgexit=false;//图片不存在
}
}
protectedvoidstartApp()throwsMIDletStateChangeException{
display=Display.getDisplay(this);
if(imgexit){//图片存在,进入欢迎界面
display.setCurrent(wc);
wc.setTitle("请任意键进入系统。
。
。
");
wc.addCommand(cmdExit);
wc.setCommandListener(this);
}
else{//图片不存在,提示出错信息
AlertError.setTimeout(Alert.FOREVER);
display.setCurrent(AlertErr