Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Revision as of 06:07, 13 August 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

From 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 06:07.
208 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×