Artigo Java Magazine 60 - BeansBinding

Artigo da Revista Java Magazine Edição 60.

Esse artigo faz parte da revista Java Magazine edição 60. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

BeansBinding

Sincronizando propriedades entre objetos

Aprenda sobre o BeansBinding e as facilidades do NetBeans 6

De que se trata o artigo:

Uso dos componentes da especificação BeansBinding para sincronizar propriedades de objetos de maneira mais fácil e produtiva, minimizando o típico uso de listeners. Neste artigo foi mostrado como usar as classes dessa especificação sem o suporte de uma IDE e, ao final, foi mostrado como usar o Netbeans para apoiar o uso dessas classes.

 

Para que serve:

Fornecer um meio de sincronizar propriedades de objetos distintos, de forma automática e produtiva, permitindo que uma ferramenta IDE apóie o seu uso para facilitar a codificação.

 

Em que situação o tema é útil:

Simplificar a codificação quando é necessário fazer a informação transitar de um objeto para outro, entre suas propriedades, de forma sincronizada – quando a informação é modificado em um dos lados, o outro é atualizado automaticamente. Com o suporte de IDEs Java, como o NetBeans, o uso de BeansBinding pode simplificar muito a construção de aplicações desktop.

 

BeansBinding:

O principal objetivo da JSR-295 é estabelecer um padrão para manter em sincronia as propriedades de dois objetos. O uso dos componentes dessa especificação simplifica a codificação necessária para manter as propriedades de objetos distintos trocando informações entre si, como pode ser visto nas Listagens 1 e 2. Notificações automáticas para modificações em atributos de nossas classes podem ser incluídas usando o PropertyChangeSupport, conforme as Listagens 3 e 4. Essa especificação também traz uma maneira de criarmos o controle do ciclo de vida do binding (Listagem 5), conversores e validadores. Propriedades especiais (Tabela 1) dão suporte a componentes Swing mais complexos (JList,  JTable e JSlider, por exemplo), como mostra a Listagem 6.

Apresentados os fundamentos da JSR-295, mostraremos as facilidades encontradas no NetBeans 6.1, que apresenta recursos poderosos combinando BeansBinding com Swing Aplication Framework (JSR-296) e Java Persistence API. Você aprenderá a construir aplicações desktop com produtividade e pouca codificação.

 

Em geral, a construção de aplicações desktop em Java não costuma ser trivial. Programadores Visual Basic ou Delphi, acostumados com o arrastar e soltar dessas ferramentas, escrevendo pouco código em função do uso intenso de propriedades em tempo de projeto, constroem rapidamente aplicações relativamente complexas. Ao se depararem com o Java, têm alguma dificuldade em migrar. Se até uma simples janela de mensagens parece ser complicada à primeira vista, leva algum tempo até entender e usar bem os Gerenciadores de Layout e o Swing.

Em aplicações desktop mais elaboradas é muito comum a manutenção de banco de dados através das telas da aplicação. Com a popularização do JavaBeans e dos frameworks de mapeamento objeto relacional (EJB3/JPA, Hibernate, TopLink), principalmente no desenvolvimento web, boa parte do trabalho é associar os componentes visuais com os JavaBeans. Outro desafio é saber como amarrar os componentes visuais com os dados, mantendo uma boa separação em camadas.

Nos últimos anos a Sun vem recuperando o prejuízo. O GroupLayout, incorporado ao Java SE 6 e conhecido no NetBeans como Matisse, trouxe finalmente uma construção simples e realmente multiplataforma de interfaces gráficas. O próximo passo seria então atacar a amarração de dados e o gerenciamento geral de uma aplicação desktop. A JSR-295 – BeansBinding – veio para ajudar a atender essas necessidades e será o tema principal desse artigo. Como exemplo utilizaremos uma aplicação hipotética de Agenda pessoal. Veremos as facilidades disponíveis no NetBeans, sem deixar de comentar um pouco sobre como as coisas acontecem “nos bastidores”.

A JSR-295

O principal objetivo da JSR-295 é estabelecer um padrão para manter em sincronia as propriedades de dois objetos. Além de objetos no padrão JavaBean, suporta  objetos Maps e Lists. Digamos que precisamos criar um painel apenas com JCheckBox que, se marcado, deve habilitar um JTextField (Figura 1).

 

Figura 1. Seleção de JCheckBox com habilitação de JTextField com BeansBinding

Pelo modo tradicional, esse seria o código necessário:

 

jCheckBox1.addActionListener(new java.awt.event.ActionListener() {

  public void actionPerformed(java.awt.event.ActionEvent evt) {

jTextField1.setEnabled(jCheckBox1.isSelected());

  }

});

 

Usando o BeansBinding, teríamos:

 

Binding b = Bindings.createAutoBinding(

  UpdateStrategy.READ, // Estratégia de mudança das propriedades" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados