No post sobre LWUIT de hoje vamos aprender como por um tema na nossa aplicação e criar um form e um list.
Veja os outros 2 posts anteriores de LWUIT (LWUIT - Introdução e HelloWorld com LWUIT).
Para iniciar precisamos de um tema. Este tema é um arquivo .res, que pode ser criado pelo próprio desenvolvedor, através da ferramenta Resource Edit ou baixado na internet. O tema que utilizaremos na aplicação pode ser baixado aqui. Insira ele na pasta src do seu projeto.
O código para carregar o tema é o seguinte:
try {
Resources r = Resources.open("/javaTheme.res");
UIManager.getInstance().setThemeProps(r.getTheme(r.getThemeResourceNames()[0]));
} catch (IOException ioe) {
System.out.println("O tema não pode ser carregado.");
}
Para criarmos um form é semelhante ao utilizando em LCDUI, porém cuidado na hora de importar a biblioteca para não importar a javax.microedition.lcdui.Form e sim a com.sun.lwuit.Form (Isto também vale para comandos, list, entre outros que for utilizar). Depois mostramos o form com o método show().
Form form = new Form("Título do Form");
form.show();
Vamos criar um comando sair e um comando listar
Command sair = new Command("Sair");
Command listar = new Command("Listar");
Agora adicionamos os comandos ao form e informamos que o form possui um ou mais eventos, para isto seu MIDlet deve implementar a classe ActionListener
form.addCommand(sair);A aplicação deve conter um método actionPerformed(ActionEvent ae) para implementar o que deve ser feito quando os eventos forem disparados. Para o comando sair destruímos a aplicação e o comando listar chamará um list. Portanto devemos criar um list e informar seus elementos.
form.addCommand(listar);
form.setCommandListener(this);
public void actionPerformed(ActionEvent ae) {No LWUIT um list é construído dentro de um form. O código abaixo mostra como criar um list, inserir elementos nele e depois adicioná-lo a um form.
if(ae.getSource() == sair){
notifyDestroyed();
}
if(ae.getSource() == listar){
}
}
list = new List();
list.addItem("Um");
list.addItem("Dois");
list.addItem("Tres");
list.addItem("Quatro");
form.addComponent(list);
form.show();
O código completo da aplicação fica o seguinte:
import com.sun.lwuit.Command;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.List;
import com.sun.lwuit.events.*;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;
import java.io.IOException;
import javax.microedition.midlet.*;
public class MidletListar extends MIDlet implements ActionListener{
Form form;
Command sair, listar;
List list;
public void startApp() {
Display.init(this);
// TEMA
try {
Resources r = Resources.open("/javaTheme.res");
IManager.getInstance().setThemeProps(r.getTheme(r.getThemeResourceNames()[0]));
} catch (IOException ioe) {
System.out.println("O tema não pode ser carregado.");
}
form = new Form("LWUIT");
form.show();
// COMANDOS
sair = new Command("Sair");
listar = new Command("Listar");
form.addCommand(sair);
form.addCommand(listar);
form.setCommandListener(this);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource() == sair){
notifyDestroyed();
}
if(ae.getSource() == listar){
// CRIANDO UM LIST
list = new List();
list.addItem("Um");
list.addItem("Dois");
list.addItem("Tres");
list.addItem("Quatro");
form.addComponent(list);
form.show();
}
}
}
O resultado da aplicação é mostrado nas figuras abaixo. Para baixar o projeto completo feito no NetBeans clique aqui.
7 comentários:
No Netbeans 6.5.1 apresenta o erro abaixo
o que seria este erro
---------------------
D:\Netbeans\Lista\nbproject\build-impl.xml:57: Platform home (platform.home property) is not set. Value of this property should be Java(TM) Platform Micro Edition SDK 3.0 emulator home directory location.
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)
Olá Judão,
O que indica no erro: Value of this property should be Java(TM) Platform Micro Edition SDK 3.0 emulator home directory location.
Refere-se ao emulador do Netbeans 6.5.1 que não é compatível. O emulador que vc está usando não é compatível. Instale o SDK 3.0, ou atualize seu netbeans. Outros emuladores como o sprint também rodam projetos com lwuit.
Veja sobre o SDK 3: http://www.javamovel.com/2009/06/java-platform-me-sdk-30-o-sucessor-do.html
Att, javamovel.com
O post está ótimo, muito bom, vlw pela ajuda. vcs são d+++.
Muito bom, me ajudou muito. Alias, todo o site é excelente.
OBS:
No código completo repare que:
- Na linha 24 a classe que deve ser utilizada é a "UIManager" e não a "IManager";
- Após a linha 39 faltou o comando que manda exibir o Formulário, que é o form.show().
Abraço
Post muito bom, pra mim só não está perfeito porque está dando o seguinte erro quando começa a emulador.
==================================================
Installing suite from: http://127.0.0.1:1806/HelloLWUITMidlet.jad
*** Error ***
A problem occured during deploying application from http://127.0.0.1:1806/HelloLWUITMidlet.jad
Reason:
Corrupt JAR, error while reading: HelloLWUITMidlet.class
C:\Documents and Settings\acer\My Documents\NetBeansProjects\HelloLWUITMidlet\nbproject\build-impl.xml:889: Execution failed with error code 1.
FALHA NA CONSTRUÇÃO (tempo total: 9 segundos)
================================================
Obrigado!
Estou com o mesmo problema!
aff
Ola, estou tentando adicionar mais de um tema, para caso queira trocar de tema no enquanto a aplicação é executada. Gostaria de saber se isto é possivel.
Agradeço desde já.
Postar um comentário