Java
210 pág.

Java


DisciplinaProgramação Orientada A Objetos3.883 materiais56.995 seguidores
Pré-visualização43 páginas
vamos usar o mesmo método keyPressed(), keyRepeated() ou keyReleased() do módulo anterior.
//arquivo ClasseMeuCanvas.java
import javax.microedition.lcdui.*;
public class ClasseMeuCanvas extends Canvas {
 protected void keyPressed(int getTecla){
 }
 public void paint(Graphics meuGrafico){
 repaint();
 }
}
Agora as constantes das teclas auxiliares não podem ser pegas de forma direta, para isso vamos usar o método
getKeyCode() e como parâmetro vamos entrar o código da tecla que queremos, nesse caso usamos a tecla FIRE que
fica no meio das setas do celular.
//arquivo ClasseMeuCanvas.java
import javax.microedition.lcdui.*;
public class ClasseMeuCanvas extends Canvas {
 protected void keyPressed(int getTecla){
 if (getTecla == getKeyCode(FIRE));
 }
 public void paint(Graphics meuGrafico){
 repaint();
 }
}
J2ME 44
Agora vamos colocar uma ação para quando pressionarmos a tecla, nesse caso vamos exibir uma mensagem no
console.
public class ClasseMeuCanvas extends Canvas {
 protected void keyPressed(int getTecla){
 if (getTecla == getKeyCode(FIRE)){
 System.out.println("Pressionou tecla FIRE do celular");
 }
 }
 public void paint(Graphics meuGrafico){
 repaint();
 }
}
CommandListener
Agora entraremos na parte interativa onde o usuário pode interagir com as funções do celular através do teclado ou
da caneta digital.
Estrutura básica do CommandListener
Antes de trabalharmos para receber comandos, na nossa classe Midlet precisamos implementar a classe
CommandListener.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
}
Agora vamos inserir o método commandAction() que iremos usar diretamente para manipular as ações do teclado,
esse método deverá sempre ter 2 parâmetros, o primeiro é o objeto da classe Command (que veremos logo após) e o
outro é o objeto Displayable.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 public void startApp() {
 }
J2ME 45
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command pegarComando, Displayable 
pegarDisplay){
 }
}
Criando um comando
Para criar um comando primeiro precisamos intanciar uma variável do tipo Command.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 Command meuComando;
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command pegarComando, Displayable 
pegarDisplay){
 }
}
Agora vamos criar o objeto Command, para isso vamos usar como parâmetro respectivamente: 1º o texto que será
exibido na tela, 2º o tipo de comando e 3º a prioridade do comando.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 Command meuComando = new Command("OK", Command.OK, 0);
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command pegarComando, Displayable 
J2ME 46
pegarDisplay){
 }
}
Detectando a ação de um comando
Agora vamos para a parte prática, vamos detectar uma ação de comando pelo teclado do celular, já temos o objeto
Command criado, agora vamos criar uma condição caso ele seja apertado.
Como vimos anteriormente é dentro do método commandAction() que fazemos os trabalhos com comandos, é
através dos dos atributo do tipo Command que vamos fazer a comparação com o objeto Command externo que
criamos, e vamos exibir uma mensagem no console.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 Command meuComando = new Command("OK", Command.OK, 0);
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command pegarComando, Displayable 
pegarDisplay){
 if(pegarComando == meuComando){
 System.out.println("Pressionou o botão OK");
 }
 }
}
Agora calma, AINDA não vai acontecer nada quando apertarmos o botão, para isso precisamos criar a tela que irá
"escutar" o comando que iremos colocar, podemos fazer a tela com qualquer objeto tipo Alert, TextBox, etc... no
nosso caso vamos usar um simples Form.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 Command meuComando = new Command("OK", Command.OK, 0);
 Form meuForm = new Form("Título do formulário");
 public void startApp() {
 }
J2ME 47
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command pegarComando, Displayable 
pegarDisplay){
 if(pegarComando == meuComando){
 System.out.println("Pressionou o botão OK");
 }
 }
}
Agora dentro do método startApp() vamos adicionar o comando à tela do Form através do método addCommand().
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 Command meuComando = new Command("OK", Command.OK, 0);
 Form meuForm = new Form("Título do formulário");
 public void startApp() {
 meuForm.addCommand(meuComando);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command pegarComando, Displayable 
pegarDisplay){
 if(pegarComando == meuComando){
 System.out.println("Pressionou o botão OK");
 }
 }
}
Agora vamos adicionar o "escutador" no Form, para detectar se pressionamos ou não algum botão.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{
 Display meuDisplay = Display.getDisplay(this);
 Command meuComando = new Command("OK", Command.OK, 0);
 Form meuForm = new Form("Título do formulário");
J2ME 48
 public void startApp() {
 meuForm.addCommand(meuComando);
 meuForm.setCommandListener(this);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command pegarComando, Displayable 
pegarDisplay){
 if(pegarComando == meuComando){
 System.out.println("Pressionou o botão OK");
 }
 }
}
Por fim, colocamos normalmente o método setCurrent() da classe Display.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet implements CommandListener{