【问题标题】:How can I create a button on a form in a J2ME application?如何在 J2ME 应用程序的表单上创建按钮?
【发布时间】:2013-02-02 20:34:20
【问题描述】:

我尝试制作一个简单的“hello world”应用程序,在单击按钮时,它会打印一个字符串“hello world”。如何在表单上添加按钮?

我需要创建一个按钮,当我单击它时可以生成一个字符串。在 j2me 中如何在不使用画布的情况下添加按钮?

【问题讨论】:

    标签: button java-me midp lcdui


    【解决方案1】:

    对此有一个 API,但您最好三思而后行是否真的需要它。

    API 在Appearance modes section for lcdui Item objects 中描述

    StringItem 和 ImageItem 类具有可在其构造函数中设置的外观模式属性。此属性可以具有值 PLAIN、HYPERLINK 或 BUTTON 之一。 PLAIN 的外观模式通常用于文本或图形材料的非交互式显示。外观模式值对项目的交互性没有任何副作用。为了具有交互性,该项目必须具有一个或多个命令(最好分配一个默认命令),并且它必须具有接收命令调用通知的 CommandListener...

    BUTTON 模式下的 StringItem 或 ImageItem 可用于创建基于按钮的用户界面...

    请注意,本节还解释了使用按钮外观可能出现问题的情况:

    ...这很容易导致应用程序使用不便。例如,在基于遍历的系统中,用户必须先导航到一个按钮,然后才能调用其上的任何命令。如果按钮分布在一个长表单中,用户可能需要执行大量导航才能发现所有可用命令。此外,从表单另一端的按钮调用命令可能非常麻烦。基于遍历的系统通常提供一种从任何地方(例如从菜单)调用命令的方法,而无需遍历特定项目。与其将命令添加到按钮并将该按钮放入表单中,不如将该命令直接添加到表单中对用户来说更合适和方便。只有在用户与项目的字符串或图像内容直接交互对于用户理解可以从该项目调用的命令至关重要的情况下,才应使用按钮。

    【讨论】:

      【解决方案2】:

      从我在一本旧的 J2ME 书中找到的类图(在线 http://www.stardeveloper.com/articles/display.html?article=2002121101&page=2)看来 J2ME 不做按钮。好吧,在旧手机上不需要它们。

      只需创建一个“hello”命令并将其添加到菜单或表单中。然后系统会将其放在您设备上可用的任何按钮上。对于可能将其变成可点击的触摸屏设备。

      这是代码

      import javax.microedition.lcdui.Command;
      import javax.microedition.lcdui.CommandListener;
      import javax.microedition.lcdui.Display;
      import javax.microedition.lcdui.Displayable;
      import javax.microedition.lcdui.Form;
      import javax.microedition.lcdui.TextBox;
      import javax.microedition.lcdui.TextField;
      import javax.microedition.midlet.MIDlet;
      import javax.microedition.midlet.MIDletStateChangeException;
      
      
      public class HelloWorld extends MIDlet implements CommandListener {
      
          private static final String HELLO_WORLD = "Hello, World!!";
      
          private Form form= new Form ("");
      
          private Command exit= new Command("Exit", Command.EXIT, 0x01);
          private Command ok= new Command("OK", Command.OK, 0x01);
          private Command hello= new Command("HELLO", Command.SCREEN, 0x01);
      
          private TextBox textBox= new TextBox("Hello World", HELLO_WORLD, HELLO_WORLD.length(), TextField.UNEDITABLE);
      
          public HelloWorld() {
              this.form.addCommand(exit);
              this.form.addCommand(hello);
              this.form.setCommandListener(this);
              this.textBox.addCommand(ok);
              this.textBox.addCommand(exit);
              this.textBox.setCommandListener(this);
          }
      
          protected void destroyApp(boolean unconditional)
                  throws MIDletStateChangeException { }
      
          protected void pauseApp() { }
      
          protected void startApp() throws MIDletStateChangeException {
              Display.getDisplay(this).setCurrent(this.form);
          }
      
          public void commandAction(Command c, Displayable d) {
              if (c == this.exit) {
                  this.notifyDestroyed();
              }
              if(c == this.ok) {
                  Display.getDisplay(this).setCurrent(this.form);         
              }
              if(c == this.hello) {
                  Display.getDisplay(this).setCurrent(this.textBox);          
              }
          }
      
      }
      

      【讨论】:

      • 非常感谢!我很难弄清楚如何在屏幕上添加按钮,最后我知道 j2me 应用程序不支持按钮。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      相关资源
      最近更新 更多