有效利用UI部件(2)-----转

有效利用UI部件(2)

 

 在上一讲,我们说明了名为Alert 和TextFieldUI部件的使用方法,最后还出了练习题,这些都还记得吧?
 当然记得,是制作猜数字游戏。
 我们将在这一讲来解答那道练习题,之后将接着介绍Ticker、StringItem以及 List类的使用方法。


1.猜数字游戏

 上一讲的练习题的题目是完成猜数字游戏。
问题点是未完成commandAction指令,其实加入适当代码就可以解决了。
 通过 TextField获取用户输入数值,并显示与数值相对应的信息就可以啦。
 是这样的。信息的显示可以通过运用Alert类来完成。
那么我就公布答案了。下面即为完成后的commandAction指令。

GuessTheNumber.java 的commandAction指令

    
1
 public void commandAction(Command c, Displayable s) { 
2
 if (c == exitCommand) { 
3
    // 选择“Exit”时的处理 
4
    // 应用程序结束 
5
    destroyApp(false); 
6
    notifyDestroyed(); 
7 } else if(c == guessCommand) { 
8    // 选择“Guess”时的处理 
9   
10    // 将count增加1 
11    count++; 
12     
13    // 从输入的字符串里提取整数数字 
14    int value = Integer.parseInt(textField.getString()); 
15    String message = ""; 
16     
17    /* 
18    运用Alert显示信息 
19    纠正答案时,根据猜测的数字过大或者过小, 
20    显示信息也作相应的改变 
21    答案正确时,运行reset方法,返回初始状态。 
22    */ 
23    if(value == answer) { 
24       // 正确答案 
25       message = "Congratulations!/nThe answer was " + answer + "./n" + 
26                        "It took you " + count + " turns."; 
27       reset(); // 答案初始化 
28    } else if(value > answer) { 
29        // 猜测数值过大 
30       message = "Turn " + count + ". Your guess is too high."; 
31    } else { 
32        // 猜测数值过小 
33       message = "Turn " + count + ". Your guess is too low."; 
34    } 
35           
36    // 生成用于显示信息的Alert 
37    Alert alert = new Alert("Result"); 
38    alert.setType(AlertType.INFO); 
39    alert.setTimeout(Alert.FOREVER); 
40    alert.setString(message); 
41    display.setCurrent(alert); 
42   } 
43 } 
    

 猜测数值与答案进行对比后的信息,将通过运行Alert类,显示在画面中。
 如果掌握了之前所学内容的话,这不难理解。
 将commandAction指令做如上改写后,猜数字的游戏就全部完成了。

2.Tiicker类

 那么,我们就来进入这一讲的内容。
首先来说明一下Ticker类。它用于在画面中显示滚动的字符串。
Constructor如下所示,非常简单。通过参数来指定显示字符串。

  Ticker(String str)


 显示Ticker时,会使用到Displayable类的setTicker指令。下面的代码就是在画面中显示Ticker的例子。

TickerTest.java

    
1
 import javax.microedition.midlet.MIDlet; 
2
 import javax.microedition.lcdui.*; 
3
   
4
 public class TickerTest extends MIDlet implements CommandListener { 
5
     
6
    // 制定指令 
7    private Command exitCommand = new Command("Exit", Command.EXIT, 1); 
8    private Command command0 = new Command("Short Ticker", Command.SCREEN,1); 
9    private Command command1 = new Command("Long Ticker", Command.SCREEN,1); 
10     
11    // 生成Ticker Object  
12    private Ticker ticker = new Ticker("This is a ticker."); 
13   
14    private boolean firstTime;  
15    private Form mainForm; 
16    private Display display; 
17     
18    public TickerTest() { 
19       firstTime = true; 
20       mainForm = new Form("TickerTest"); 
21    } 
22    
23    protected void startApp() { 
24       if (firstTime) { 
25          // 追加Ticker 
26          mainForm.setTicker(ticker); 
27        
28          // 追加指令 
29          mainForm.addCommand(exitCommand); 
30          mainForm.addCommand(Command0); 
31          mainForm.addCommand(Command1); 
32           
33          // 注册CommandListener 
34          mainForm.setCommandListener(this); 
35          firstTime = false; 
36       } 
37       display = Display.getDisplay(this); 
38       display.setCurrent(mainForm); 
39    }   
40       
41    public void commandAction(Command c, Displayable s) { 
42       if (c == exitCommand) { 
43          // 选择“Exit”时的处理 
44          // 应用程序结束 
45          destroyApp(false); 
46          notifyDestroyed(); 
47       } else if(c == alarmCommand 0) { 
48          // 选择“Short Ticker”时的处理 
49   
50          // 变更ticker的字符串 
51          ticker.setString("ABCD"); 
52       } else if(c == alarmCommand 0) { 
53          // 选择“Long Ticker”时的处理 
54   
55          // 变更ticker的字符串 
56          ticker.setString("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); 
57       } 
58    } 
59       
60    protected void destroyApp(boolean unconditional) { 
61    } 
62           
63    protected void pauseApp() { 
64    } 
65 } 
    

 

 在上面的代码中,通过“Short Ticker”和“Long Ticker”指令,来切换在Ticker中显示的字符串。
如代码中的第51行和56行所示,通过Ticker类的setString指令可以变更所显示的字符串。


 但需要注意的是,UI部件的画面显示在模拟器上与在实机上有很大差别,所以,最后一定要在实机上实际运行确认才可以。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值