【发布时间】:2011-07-15 06:35:24
【问题描述】:
我想制作时钟应用程序,用户在文本框中输入数字并单击确定,然后用户每 1 秒获取一次数字。 示例如果用户输入 5,则计时器启动显示屏显示数字 1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,... 以此类推.
现在我已经采用表单和文本字段供用户输入数字,然后是一个计时器,它将每秒更改数字。和 10 个数字图像(0-9)。因为我想非常显示数字大尺寸。现在我已经通过以下方式实现了这个逻辑:-
公共类时钟扩展 MIDlet 实现 CommandListener {
public Command GO, Exit; TextField TxtData; protected Display display; int number, counter; Form form; private Timer timer; private TestTimerTask task; boolean increment, time; private StringItem s1 = new StringItem("", ""); Image image0; Image image1; Image image2; Image image3; Image image4; Image image5; Image image6; Image image7; Image image8; Image image9; Image[] secondAnimation; protected void startApp() { display = Display.getDisplay(this); increment = true; time = false; form = new Form("Clock"); TxtData = new TextField("Number:-", "", 5, TextField.NUMERIC); try { image0 = Image.createImage("/images/0.png"); image1 = Image.createImage("/images/1.png"); image2 = Image.createImage("/images/2.png"); image3 = Image.createImage("/images/3.png"); image4 = Image.createImage("/images/4.png"); image5 = Image.createImage("/images/5.png"); image6 = Image.createImage("/images/6.png"); image7 = Image.createImage("/images/7.png"); image8 = Image.createImage("/images/8.png"); image9 = Image.createImage("/images/9.png"); secondAnimation = new Image[]{image0,image1,image2, image3, image4, image5, image6, image7, image8, image9}; } catch (IOException ex) { System.out.println("exception"); } GO = new Command("Go", Command.OK, 1); Exit = new Command("Exit", Command.EXIT, 2); form.append(TxtData); form.append(s1); form.addCommand(GO); form.addCommand(Exit); form.setCommandListener(this); display.setCurrent(form); } protected void pauseApp() { } protected void destroyApp(boolean unconditional) { timer.cancel(); notifyDestroyed(); } public void commandAction(Command cmnd, Displayable dsplbl) { String label = cmnd.getLabel(); if (label.equals("Go")) { try { System.out.println("txt==" + (TxtData.getString())); if (!TxtData.getString().equalsIgnoreCase("")) { counter = Integer.parseInt(TxtData.getString()); if (time) { timer.cancel(); task.cancel(); } number = 1; timer = new Timer(); task = new TestTimerTask(); timer.schedule(task, 1000, 1000); } } catch (NumberFormatException ex) { System.out.println("exception"); } } else if (label.equals("Exit")) { destroyApp(true); } } private class TestTimerTask extends TimerTask { public final void run() { time = true; s1.setText(""+ number); if (counter < 10) { form.append(secondAnimation[0]); form.append(secondAnimation[0]); form.append(secondAnimation[number]); } else if (counter < 100) { form.append(secondAnimation[0]); form.append(secondAnimation[(number % 100) / 10]); form.append(secondAnimation[(number % 10)]); } else if (counter < 1000) { form.append(secondAnimation[(number % 10)]); form.append(secondAnimation[(number % 100) / 10]); form.append(secondAnimation[(number / 100)]); } number++; if (number == counter + 1) { number = 0; } } } }
但是随着计时器移动,表单继续附加图像,它没有显示所需的输出!
我曾尝试通过 LWUIT 执行此操作,但由于我有用户 10 个 .png 文件并添加 LWUIT.jar 文件,因此 .jar 文件的大小为 557kb,这非常重。
所以我只想通过普通形式来做。
我不能使用画布,因为键盘可能会有所不同(触摸、qwerty 等)。所以我只需要使用普通格式或 LWUIT。任何人都可以帮我解决这个问题。
【问题讨论】:
-
你使用了混淆吗?
标签: java-me