Legal pessoal, gostaria de agradecer primeiramente os numerosos acessos que tivemos nessa série de artigos dessa maravilhosa ferramenta. Então vamos ao que interessa.

LWUIT com a Java ME SDK 3.0 Support

                A Java ME SDK3.0 possui uma base padrão para desenvolvimento de aplicações Java, claro que nesse caso, para dispositivos móveis.

                Oferecendo uma gama de recursos para desenvolvimento que dão ao desenvolvedor um ambiente poderoso, robusto e conveniente para construir aplicações.

                Claro que a biblioteca LWUIT pode ser usada em sua plataforma tradicional do Java ME. Mas também é disponibilizada ao desenvolvedor uma IDE rica, afim de ser um facilitador para os desenvolvedores.

                Abaixo demonstro uma aplicação demonstrativa. Onde vemos que já possuímos os recursos necessários para a estrutura de um projeto que permitem ao desenvolvedor começar a criar aplicações baseadas na LWUIT , isso em poucos minutos.

Java ME SDK 3.0 Running the LWUIT Demo

 

 

Nova LWUIT 1.3

 

                A nova LWUIT 1.3 foi escrita em dezembro de 2009 e oferece várias características de melhorias:

LWUIT 1.3 Características e Melhorias:  

NOVO Controle de UI: Layout Table e componente UI tabular complexo, apoio por características como medir rows/columns. 

NOVO Controle de UI: Apoio de Teclado Virtual

NOVO Controle de UI: Apoios de Componente de TreeView aninharam elementos expandidos ou não(nos)

Toque Melhorias de Dispositivo: Botoes, Menus, enroll, cinético melhorado, toque tátil (vibração em toque) 

Melhorias no ComboBox

Criador de Themes(antigamente conhecido como LWUIT Designer/Resource Editor)

Especificação de Arquivo de recurso 

Lista de eventos usando Renderer " que faz " lógica pinta primeiro para os fundos do renderers, e então a seleção e primeiro plano 

Além do LWUIT oficial 1.3 release, o LWUIT de codigo-fonte aberto,  seu repositório mantem continuamente e melhorias adicionais como uma versão de pre-liberação do componente de HTML. O componente de HTML permite aplicações para fazer HTML que conforma a XHTML Perfil 1.0 Móvel facilmente.    

Table Component

            Esse componente permite de modo sofisticado a criação de tabelas, movimentação de linhas (rows) e colunas (columns), manipulação de eventos, e muito mais. Veja abaixo:

Screen Shot of Demo of Table Component

               

Abaixo demonstro a criação de uma Table complete que consiste um cabeçalho, em uma row, e três colunas, onde a primeira e a segunda coluna serão editáveis. Cada célula de dados pode ser editável também. Tambem podemos vê-la em modo horizontal ou vertical  e habilitar a propriedade scrollable. Segue o código:

public class TableDemo extends MIDlet implements ActionListener {

 

    public void startApp() {

 

        Form form;

        Resources res;

 

        Display.init(this); // initialize LWUIT

 

        // Load theme

        try {

            res = Resources.open("/res/businessTheme.res");

            UIManager.getInstance().setThemeProps(res.getTheme(res.getThemeResourceNames()[0]));

        } catch (IOException ioe) {

            // error loading theme

        }

 

        // Create main form and add Exit command

        form = new Form("Table Demo");

        form.addCommand(new Command("Exit"));

        form.setCommandListener(this);

 

        // Create scrollable table with header and columns 1 and 2 editable

        TableModel model = new DefaultTableModel(

            new String[] {"Unedit.", "Editable", "Multiline"},

            new Object[][] {

             {"Row 1", "Data 1", "Multi-line\ndata"},

             {"Row 2", "Data 2", "More multi-\nline data"},

             {"Row 3", "Data 3", "Data\non\nevery\nline"},

             {"Row 4", "Data 4", "Data (no span)"},

             {"Row 5", "Data 5", "More data"},

             {"Row 6", "Data 6", "More data"},

            }) {

            public boolean isCellEditable(int row, int col) {

                return col != 0;

            }

        };

        Table table = new Table(model);

        table.setScrollable(true);

        table.setIncludeHeader(true);

 

        // Add table to form and show

        form.addComponent(table);

        form.show();

    }

 

    public void pauseApp() {

    }

 

    public void destroyApp(boolean unconditional) {

    }

 

    public void actionPerformed(ActionEvent ae) {

            // only action is from Exit command

            destroyApp(true);

            notifyDestroyed();

    }

}

 

Rodando esse código, seguindo esses passos abaixo:

·         Faça o download e instale the Java ME SDK 3.0 aqui: http://java.sun.com/javame/downloads/sdk30.jsp

·         Faça o download the  TableDemo

project from here: http://tinyurl.com/348jn29 e abra the arquivo zip

·         Abra o TableDemo project (o Java ME SDK 3.0 deve reconhecer o diretório TableDemo como um projeto)

·         Tenha certeza que seu emulador tenha "Mobile Media API 1.1" ativado.

·         Clique em Run para rodar o projeto clicando no ícone de triangulo verde(play/run).

 

Lightweight Virtual Keyboard Support

 

Dispositivos de toque-tela podem tirar proveito agora da funcionalidade de teclado virtual disponível em LWUIT. Um Teclado Virtual que pode ser ligado a um campo de texto deslizará para cima quando o usuário clicar ou toques o campo de texto para introduzir um caracter.

O Teclado Virtual apóia vários modos de contribuição diferentes (texto, símbolos, números), keymaps diferente para planos de teclado feito sob medida, chaves especiais, e outras características sofisticadas.

 

Graphic: Screen Shot of Virtual Keyboard Demo on Startup and Screen Shot After User Clicks/Touches the Text Field ("Click for keyboard")

Usando um Teclado Virtual em uma aplicação é um facilitador. Esta aplicação de exemplo mostra uma aplicação de LWUIT básica com um título, um menu de SAÍDA, um campo de texto por entrar em texto, e um rótulo para exibir o texto:

public class VKBDemo extends MIDlet implements ActionListener, FocusListener {
    Form form;
    Resources res;
    TextField textField;
 
    public void startApp() {
 
        VKBImplementationFactory.init(); // initialize virtual keyboard
        Display.init(this);  // initialize LWUIT
 
        // Load theme
        try {
            res = Resources.open("/res/businessTheme.res");
            UIManager.getInstance().setThemeProps(res.getTheme(res.getThemeResourceNames()[0]));
        } catch (IOException ioe) {
            // error loading theme
        }
 
        // Create main form and add Exit command
        form = new Form("Virtual Keyboard Demo");
        form.addCommand(new Command("Exit"));
        form.setCommandListener(this);
 
        // Create text field with constraints
        textField = new TextField("Click for keyboard");
        textField.setConstraint(TextField.ANY);
        textField.setInputModeOrder(new String[]{"Abc"});
        textField.setFocusable(false); // only one component: prevent being focused right away
        textField.addFocusListener(this);
 
        // Create virtual keyboard and bind to text field
        VirtualKeyboard vkb = new VirtualKeyboard();
        vkb.setInputModeOrder(new String[] {VirtualKeyboard.QWERTY_MODE} );
        VirtualKeyboard.bindVirtualKeyboard(textField, vkb);
 
        // Add text field to form and show
        form.addComponent(textField);
        form.show();   
        textField.setFocusable(true); // after initial display, make focusable
    }
    public void pauseApp() {
    }
    public void destroyApp(boolean unconditional) {
    }
    public void actionPerformed(ActionEvent ae) {
        // only action is from Exit command
        destroyApp(true);
        notifyDestroyed();
    }
    public void focusGained(Component cmp) {
        // If user selects text field, clear it
        if (cmp == textField) {
            ((TextField)cmp).clear();
        }
    }
    public void focusLost(Component cmp) {
    }
}

 No próximo artigo finalizamos essa série e demonstrarei o compoente HTML support. Abraços++ e até a próxima.

Carlos Mazzi
Carlos@jcsistemas.com