Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 298|回复: 0

[J2ME学习]一个界面流程控制实例

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-11 08:11:35 | 显示全部楼层 |阅读模式
    import javax.microedition.lcdui.*;
       
    import javax.microedition.midlet.*;
       
    import java.util.*;
       
    public class FlowControl extends MIDlet{
       
       boolean init = true;
       
       public FlowControl(){
       
       Navigator.display = Display.getDisplay(this);
       
       Navigator.midlet = this;
       
    }
       

       
    protected void startApp(){
       
       Navigator.current = Navigator.MAIN_SCREEN;   Navigator.show(null); if(init){
       
       Alert splash = new Alert("启动画面");   splash.setType(AlertType.CONFIRMATION); //用户确认类型   splash.setTimeout(5000);
       
       Navigator.display.setCurrent(splash);
       
       init = false;
       
       }
       
    }
       
    protected void pauseApp(){}
       
    protected void destroyApp(boolean u){} }
       
      
       
       
       

       
      
      

    1. class Navigator{
    2. final public static int MAIN_SCREEN = 1;
    3. final public static int GAME_SCREEN = 2;
    4. final public static int SET_SCREEN = 3;
    5. final public static int SET_HELP_SCREEN = 4;
    6. final public static int GAME_HELP_SCREEN = 5;
    7. public static MIDlet midlet;
    8. public static Display display;
    9. public static int current = 1;
    10. public static void show(Object obj){
    11. switch(current){
    12.   case MAIN_SCREEN:
    13.    display.setCurrent(MainScreen.getInstance());
    14.    break;
    15.   case GAME_SCREEN:
    16.    display.setCurrent(GameScreen.getInstance());
    17.    break;
    18.   case SET_SCREEN:
    19.    display.setCurrent(SetScreen.getInstance());
    20.    break;
    21.   case SET_HELP_SCREEN:
    22.    display.setCurrent(new HelpScreen((String)obj));
    23.    break;
    24.   case GAME_HELP_SCREEN:
    25.    display.setCurrent(new HelpScreen((String)obj));
    26.    break;
    27. }
    28. }
    29. public static void flow(String cmd){
    30. switch(current){
    31.    case MAIN_SCREEN:
    32.     if(cmd.equals("开始")){
    33.      current = GAME_SCREEN;
    34.      show(null);
    35.     }else if(cmd.equals("设置")){
    36.      current = SET_SCREEN;
    37.      show(null);
    38.     }else if(cmd.equals("版权声明")){
    39.      display.setCurrent(CopyrightScreen.getInstance());
    40.      show(null);
    41.     }else if(cmd.equals("离开")){
    42.       midlet.notifyDestroyed();
    43.     }
    44.     break;
    45.   case GAME_SCREEN:
    46.     if(cmd.equals("规则介绍")){
    47.       current = GAME_HELP_SCREEN;
    48.       show("游戏规则介绍");
    49.     }else if(cmd.equals("返回")){
    50.       current = MAIN_SCREEN;
    51.       show(null);
    52.     }
    53.     break;
    54.   case SET_SCREEN:
    55.      if(cmd.equals("设置说明")){
    56.        current = SET_HELP_SCREEN;
    57.        show("设置方式");
    58.      }else if(cmd.equals("返回")){
    59.         current = MAIN_SCREEN;
    60.         show(null);
    61.      }
    62.     break;

    63.   case GAME_HELP_SCREEN:
    64.     if(cmd.equals("返回")){
    65.       current = GAME_SCREEN;
    66.       show(null);
    67.     }
    68.     break;
    69.   case SET_HELP_SCREEN:
    70.     if(cmd.equals("返回")){
    71.      current = SET_SCREEN;
    72.      show(null);
    73.    }
    74.    break;
    75. }
    76. }
    77. }
    78. //帮助说明界面 Singleton模式
    79. class HelpScreen extends Form implements CommandListener{
    80.   public HelpScreen(String c){
    81.    super("帮助说明");
    82.    append(c);
    83.    addCommand(new Command("返回",Command.OK,1));
    84.    setCommandListener(this);
    85.   }
    86.   public void commandAction(Command c,Displayable d){
    87.     Navigator.flow(c.getLabel());
    88.   }
    89. }
    90. //版权界面 Singleton模式
    91. class CopyrightScreen extends Alert{
    92.   private static Displayable instance;
    93.   synchronized public static Displayable getInstance(){
    94.    if(instance == null){
    95.      instance = new CopyrightScreen();
    96.    }
    97.   return instance;
    98.   }
    99.   private CopyrightScreen(){
    100.    super("版权声明");
    101.    setString("此应用程序之版权归NIIT教研室所有");
    102.    setType(AlertType.INFO);
    103.    setTimeout(Alert.FOREVER);
    104. }
    105. }
    106. //主界面 Singleton模式
    107. class MainScreen extends List implements CommandListener{
    108. private static Displayable instance;
    109. synchronized public static Displayable getInstance(){
    110. if(instance == null){
    111.   instance = new MainScreen();
    112. }
    113. return instance;
    114. }
    115. private MainScreen(){
    116.   super("主菜单",List.IMPLICIT);
    117.   append("开始",null);
    118.   append("设置",null);
    119.   append("版权声明",null);
    120.   append("离开",null);
    121.   setCommandListener(this);
    122. }
    123. public void commandAction(Command c,Displayable d){
    124.   String cmd = getString(getSelectedIndex());
    125.   Navigator.flow(cmd);
    126. }
    127. }
    128. //设置主界面 Singleton模式
    129. class SetScreen extends Form implements CommandListener{
    130.   private static Displayable instance;
    131.   TextField url = null;
    132.   Gauge volume = null;
    133.   synchronized public static Displayable getInstance(){
    134.    if(instance == null){
    135.     instance = new SetScreen();
    136.    }
    137.    return instance;
    138.   }
    139.   private SetScreen(){
    140.    super("设置");
    141.    url = new TextField("请输入服务器的设置","socket://127.0.0.1:99",40,TextField.URL);
    142.    append(url);
    143.    volume = new Gauge("音量",true,10,3);
    144.    append(volume);
    145.    addCommand(new Command("设置说明",Command.HELP,1));
    146.    addCommand(new Command("返回",Command.BACK,1));
    147.    setCommandListener(this);
    148. }
    149. public void commandAction(Command c,Displayable d){
    150.   Navigator.flow(c.getLabel());
    151. }
    152. }
    153. //游戏主界面 Singleton模式
    154. class GameScreen extends Form implements CommandListener{
    155.   private static Displayable instance;
    156.   TextField url = null;
    157.   Gauge volume = null;
    158.   synchronized public static Displayable getInstance(){
    159.    if(instance == null){
    160.     instance = new GameScreen();
    161.    }
    162.    return instance;
    163.   }
    164.   private GameScreen(){
    165.    super("游戏");
    166.    addCommand(new Command("规则介绍",Command.HELP,1));
    167.    addCommand(new Command("返回",Command.BACK,1));
    168.    setCommandListener(this);
    169.   }
    170. public void commandAction(Command c,Displayable d){
    171.     Navigator.flow(c.getLabel());
    172. }
    173. }
    174. 运行图:
    175. [img]http://img.javaxxz.com/2014/10/11/081114296.jpg[/img]
    复制代码

       
         
         
          
          

            
          

            
          
         
       
    复制代码

      


    源码下载:http://203.93.208.26/kj/cwb/dir7/FlowControl.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-22 15:35 , Processed in 0.400314 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表