×
Namespaces

Variants
Actions

Como usar um TextBox dentro de um Pop-up, com Java ME

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Exemplo de código
Compatibilidade
Plataforma(s):
Symbian
S60 5th Edition

Artigo
Tradução:
Por thiagobrunoms
Última alteração feita por hamishwillee em 13 Aug 2013

Contents

Introdução

Um dos Displayables na API LCDUI é o TextBox (estende a classe Screen), que permite ao usuário inserir e editar texto. É comumente utilizada para inserir textos relativamente curtos, até mesmo palavras isoladas. Em qualquer caso, o componente TextBox utiliza toda a tela. Entretanto, na S60 5a edição o novo modo de TextBox via Pop-up é introduzido. Ao utilizar um atributo JAD "Nokia-UI-Realce" com valor "PopUpTextBox" todas as telas TextBox são mostrados como diálogos menores, sem obscurecer a tela subjacente.

Nokia-UI-Enhancement: PopUpTextBox

Pop-up TextBox não possui algumas propriedades da "tradicional" TextBox:

  • Ticker não pode ser visualizado
  • Não existe suporte para delimitar o número máximo de caracteres de entrada

Este TextBox vazio tem uma linha, mas se for necessário, seu tamanho irá crescer. O número máximo de linhas visíveis depende do tamanho da tela. Nas telas nHD (640x360 pixels) são 5 linhas de texto. Introduzir e editar texto é possível digitando no TextBox.

A imagem abaixo mostra um TextBox vazio na parte superior da tela (no modo normal) e um TextBox com 5 linhas de texto:

Popup.png

Pode-se observar abaixo uma MIDlet que demonstra as características deste novo pop-up.

Código-fonte: 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 = "Texto do 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);
}
}


Código-fonte: 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);
}
}
}


Código-fonte: 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("Digite o Texto", Command.SCREEN, 1);
exitCommand = new Command("Sair", 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("Digite o Texto", midlet.canvasText, 1000, TextField.ANY, midlet);
Display.getDisplay(midlet).setCurrent(textbox);
}
if (c == exitCommand) {
midlet.notifyDestroyed();
}
}
}


Aplicação Exemplo

Veja Também

This page was last modified on 13 August 2013, at 09:07.
89 page views in the last 30 days.
×