`
wuhua
  • 浏览: 2116734 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

How to use pop-up TextBox in Java ME

    博客分类:
  • J2ME
阅读更多

Overview

One of the Displayables in LCDUI is TextBox (extending Screen class), which allows user to enter and edit text. It is commonly used for entering relatively short texts, even single words. In any case TextBox has used the whole screen, which has made user experience bad. Now in S60 5th Edition new mode of pop-up TextBox is introduced. By using a JAD attribute "Nokia-UI-Enhancement" with value "PopUpTextBox" all the TextBox screens are shown as smaller dialogs, without obscuring the underlying screen.
Nokia-UI-Enhancement: PopUpTextBox

Pop-up TextBox does lack have some properties of "traditional" TextBox:
Ticker is not visible
Text input capacity indicator is not supported


An empty Pop-up TextBox has one line, but if needed, its size will grow. The exact maximum amount of visible lines depends on the screen size. In nHD screens (640x360 pixels) it is 5 rows of text. Inputting and editing text is possible by tapping on the TextBox.

The image below shows an empty pop-up TextBox on top of Canvas (in normal mode) and a pop-up TextBox with 5 rows of text

 

Here is a simple MIDlet demonstrating pop-up TextBox feature.
[edit]
Source code: PopUpTextBoxMIDlet.java
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
 
public class PopUpTextBoxMIDlet extends MIDlet {
    private PopUpTextBoxCanvas canvas;
    protected String canvasText = "Text from the TextBox";
 
    public void startApp() {
        canvas = new PopUpTextBoxCanvas(this);
        Display.getDisplay(this).setCurrent(canvas);
    }
 
    public void pauseApp() {
    }
 
    public void destroyApp(boolean unconditional) {
    }
 
    protected void closeTextBox(boolean update) {
        if (update) canvasText = canvas.textbox.getString();
        if (canvas.textbox != null) canvas.textbox = null;
        Display.getDisplay(this).setCurrent(canvas);
    }
 
    protected void showError(String title, String text) {
        Alert alert = new Alert(title, text, null, AlertType.ERROR);
        alert.setTimeout(Alert.FOREVER);
        alert.getType().playSound(Display.getDisplay(this));
        Displayable current = Display.getDisplay(this).getCurrent();
        if (current instanceof Alert) {}
        else Display.getDisplay(this).setCurrent(alert);
    }
}


[edit]
Source code: PopUpTextBox.java
import javax.microedition.lcdui.*;
 
public class PopUpTextBox extends TextBox implements CommandListener {
    private Command okCommand;
    private Command cancelCommand;
    private PopUpTextBoxMIDlet midlet;
   
    public PopUpTextBox(String title, String text, int maxsize, int constraints, PopUpTextBoxMIDlet midlet) {
        super(title, text, maxsize, constraints);
        this.midlet = midlet;
        okCommand = new Command("Ok", Command.OK, 1);
        cancelCommand = new Command("Cancel", Command.CANCEL, 1);
        this.addCommand(okCommand);
        this.addCommand(cancelCommand);
        this.setCommandListener(this);
    }
 
    public void commandAction(Command c, Displayable d) {
        if (c == okCommand) {
            midlet.closeTextBox(true);
        }
        if (c == cancelCommand) {
            midlet.closeTextBox(false);
        }
    }
}


[edit]
Source code: PopUpTextBoxCanvas.java
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.TextField;
 
public class PopUpTextBoxCanvas extends Canvas implements CommandListener {
    private PopUpTextBoxMIDlet midlet;
    private Command enterCommand;
    private Command exitCommand;
    protected PopUpTextBox textbox;
    private int width;
    private int height;
 
    public PopUpTextBoxCanvas(PopUpTextBoxMIDlet midlet) {
        this.midlet = midlet;
        enterCommand = new Command("Enter text", Command.SCREEN, 1);
        exitCommand = new Command("Exit", Command.EXIT, 1);
        this.addCommand(enterCommand);
        this.addCommand(exitCommand);
        this.setCommandListener(this);
    }
   
    public void paint(Graphics g) {
        g.setColor(255, 255,255);
        g.fillRect(0, 0, width, height);
        g.setColor(0, 0, 0);
        g.drawString(midlet.canvasText, 0, 0, Graphics.TOP|Graphics.LEFT);
    }
 
    protected  void keyPressed(int keyCode) { }
   
    protected  void keyReleased(int keyCode) { }
 
    protected  void keyRepeated(int keyCode) { }
   
    protected  void pointerDragged(int x, int y) { }
 
    protected  void pointerPressed(int x, int y) { }
 
    protected  void pointerReleased(int x, int y) { }
 
    protected void sizeChanged(int w, int h) {
        width = w;
        height = h;
        repaint();
    }
 
    public void commandAction(Command c, Displayable d) {
        if (c == enterCommand) {
            textbox = new PopUpTextBox("Enter text", midlet.canvasText, 1000, TextField.ANY, midlet);
            Display.getDisplay(midlet).setCurrent(textbox);
        }
        if (c == exitCommand) {
            midlet.notifyDestroyed();
        }
    }
}

 download http://www.forum.nokia.com/piazza/wiki/images/b/b3/PopUpTextBoxMIDlet.zip

 

分享到:
评论

相关推荐

    自定义Text的pop-up菜单

    ### 自定义Text的pop-up菜单知识点详解 #### 一、知识点概述 在软件开发领域,特别是在用户界面设计中,提供自定义的弹出菜单(pop-up menu)是一种增强用户体验的有效方式。本文档介绍了一个名为“自定义Text的...

    This demonstrates how to create an auto-scrolling textbox.

    在Windows应用程序开发中,如使用Visual Basic 6 (VB6)或类似环境,我们可以自定义一个TextBox控件,使其具备自动滚动到最新输入内容的功能。 首先,我们需要了解TextBox控件的基本属性和事件。TextBox通常用于接收...

    精彩编程与编程技巧-自定义Text的pop-up菜单...

    本篇将详细介绍如何为一个文本框(`TextBox`)创建一个自定义的弹出菜单(Pop-up Menu),并探讨其背后的实现原理和技术细节。 #### 实现步骤详解 ##### 1. 弹出菜单的基本概念 在Windows应用中,弹出菜单是一种...

    easyui-textbox和easyui-combobox的onchange事件响应实例

    alert('Textbox value changed to: ' + value); } function handleComboboxChange(newValue, oldValue) { alert('Combobox value changed from ' + oldValue + ' to ' + newValue); } ``` 在上面的例子中...

    VB程序实例-在TextBox中设置新的系统功能菜单.zip

    VB程序实例-在TextBox中设置新的系统功能菜单.zip

    This program shows how to filter out characters from TextBox

    This program shows how to filter out characters from TextBox control.Uses GetWindowLong and SetWindowLong APIs.

    精彩编程与编程技巧-突破 TextBox 32 K 的限制...

    ### 精彩编程与编程技巧-突破 TextBox 32K 的限制 在进行软件开发时,特别是使用 Visual Basic 进行 Windows Forms 应用程序设计时,经常会遇到 TextBox 控件的最大文本容量限制问题。默认情况下,TextBox 控件能够...

    easyui textbox失去焦点事件及获取文本框的内容

    我们可以通过在文本框的data-options中指定events属性来绑定blur事件,如:<input class="easyui-textbox" data-options="events:{blur:getStaffno}" id="staffno"name="staffno" value="${user.staffno}"/> ...

    基于easyui-textbox的颜色选择器及源码

    本文将深入探讨基于EasyUI的TextBox颜色选择器及其源码,帮助开发者理解这一组件的工作原理并实现自定义功能。 EasyUI是一个基于jQuery的轻量级前端框架,它提供了丰富的UI组件,使得开发者可以快速构建出美观、...

    精彩编程与编程技巧-屏蔽TextBox的系统菜单...

    ### 屏蔽TextBox系统菜单的知识点 #### 一、引言 在开发应用程序时,有时我们需要对用户界面(UI)中的控件进行定制化的处理,比如禁用或自定义某些默认行为。本文档介绍了一种方法,即如何屏蔽`TextBox`控件的系统...

    java-me-A-programming-source-code.zip_java programming

    - **UI设计**:Java ME中的用户界面通常是基于轻量级的用户界面组件,如Form、ChoiceGroup和TextBox等,开发者需要了解如何创建和布局这些组件。 - **网络编程**:Java ME支持HTTP和TCP/IP协议,可以用来实现数据...

    精彩编程与编程技巧-让TextBox的输入具备overwrite(覆盖)的功能...

    在探讨如何使`TextBox`控件的输入具备覆盖(overwrite)功能之前,我们先来了解一下`TextBox`控件的基本概念及其在编程中的作用。`TextBox`是Windows Forms中最为常用的控件之一,主要用于接收用户的文本输入。在...

    javaME 开发源码javaME 开发源码

    JavaME,全称为Java Micro Edition,是Java技术在嵌入式设备和移动设备上的应用版本。这个平台主要用于开发和部署在手机、智能家电、车载系统等小型设备上的应用程序。JavaME为开发者提供了一套标准的API,使得软件...

    java me实例代码

    3. **用户界面**:在Java ME中,MIDP提供了用户界面构建工具,如Canvas和Form,以及基础组件如ChoiceGroup和TextBox,用于创建简单的图形用户界面。 4. **网络编程**:Java ME支持基本的HTTP和TCP/IP通信,允许...

    java me API中文手册

    Java ME (Micro Edition) 是Java平台的一个版本,专为资源有限的移动设备和嵌入式系统设计。这个API中文手册是开发者在进行Java ME应用程序开发时的重要参考资料,它提供了详细的类库、接口和方法说明,使得开发者能...

    javame讲解PPT

    JavaME,全称为Java Micro Edition,是Java技术在嵌入式设备和移动设备上的应用版本。这个技术平台为开发小型设备如手机、智能家电、车载系统等提供了强大的编程能力。以下是对JavaME深入讲解的知识点概述: 1. **...

    精彩编程与编程技巧-在 Textbox 中,录入 N 个字符后移到下栏...

    然而,如果是在C#或Java等其他语言中实现同样的功能,代码结构和语法会有所变化。 ### 知识点五:实际应用场景与优化策略 在实际应用中,此技巧特别适用于需要快速录入大量数据的场景,如银行交易系统、医疗记录...

    AnyFo - Java ME化骨棉掌.doc

    ### AnyFo - Java ME化骨棉掌知识点梳理 #### 一、环境搭建 **1.1 WTK简介** WTK(Wireless Toolkit)是Sun Microsystems为Java ME平台提供的开发工具包,主要用于创建、测试和调试Java ME应用程序。WTK包含了...

    javaME教程

    4. **用户界面设计**:在JavaME中,通常使用WTK(Wireless Toolkit)进行UI设计,包括基本组件如Label、TextBox、ChoiceGroup等,以及Canvas类,可以自定义图形界面。 5. **游戏开发**:JavaME支持2D图形编程,可以...

Global site tag (gtag.js) - Google Analytics