Saiu recentementge no site do Terra, um artigo falando sobre a tendência de mercado em lançar celulares e dispositivos móveis sensíveis ao toque. Questão importante, pois depois do lançamento do Motorola A388, já ultrapassado no mercado, não se viram celulares com esta capacidade, se esta moda pegar, uma das características muito importante de PDA´s poderá estar disponível na maioria dos telefones, facilitando a entrada de dados, porque, é muito mais fácil inserir informações através do teclado QWERTY que a maioria dos PDA´s traz, mesmo que de forma virtual, do que ficar usando o “dedão” no celular. O artigo completo pode ser encontrado em http://tecnologia.terra.com.br/interna/0,,OI1069170-EI4796,00.html.
Seguindo o racicionínio, muitas pessoas podem se perguntar, mas o Java ME tem suporte a esta funcionalidade? A resposta é sim! A classe Canvas disponibiliza três métodos para tratamento de ponteiros, ou caneta stylus, sendo eles: pointerPressed(int x, int y), pointerDragged(int x, int y) e pointerReleased(int x, int y). Para ver seu uso, foi disponibilizado abaixo um código completo e funcional de uma MIDlet que verifica a ação de apontamento, e desenha um círculo no local apontado.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class TelaSensivelToque extends MIDlet {
private Display display;
private Tela tela;
public void startApp() {
display = Display.getDisplay(this);
tela = new Tela();
display.setCurrent(tela);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
class Tela extends Canvas
{
private int altura = getHeight();
private int largura = getWidth();
private int circX = -1;
private int circY = -1;
public void paint(Graphics g)
{
g.setColor(255, 255, 255);
g.fillRect(0, 0, largura, altura);
if (circX != -1)
{
g.setColor(0, 0, 255);
g.fillArc(circX-5, circY-5, 10, 10, 0, 360);
g.setColor(0, 0, 0);
g.drawArc(circX-5, circY-5, 10, 10, 0, 360);
}
}
public void pointerPressed(int x, int y)
{
System.out.println(”entoru e vai mandar repintar’”);
circX = x;
circY = y;
repaint();
}
public void pointerDragged(int x, int y){}
public void pointerReleased(int x, int y){}
}
Porém, aianda precisamos configurar o nosso emulador, se o leitor já tentou compilar e executar este código percebeu que não aconteceu nada, pois bem, na maioria dos SDK ou Toolkit que emulam telefones celulares existem arquivos de propriedades para cada telefone emulado, no caso do Wireless Toolkit disponibilizado pela Sony Ericsson, é possível encontrar os devices no diretório C:\SonyEricsson\J2ME_SDK\PC_Emulation\WTK2\wtklib\devices\, é disponibilizada uma pasta para cada aparelho, dentro da cada uma delas tem um arquivo chamado
Dentro deste arquivo o leitor irá encontrar uma propriedade touch_screen=false, basta atualizá-la para true e executar o exemplo novamente. Veja a figura abaixo e note a diferença no seu cursor.

Espero ter contribuído com a comunidade.
Att.
Ping
