DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo Java Magazine 70 - Swing + Beans Binding

Descubra como a implementação da JSR-295 (Beans Binding) e seu suporte no NetBeans revolucionam a produtividade no desenvolvimento de aplicações desktop






Swing + Beans Binding

Aplicando o padrão de projeto Presentation Model

Descubra como a implementação da JSR-295 (Beans Binding) e seu suporte no NetBeans revolucionam a produtividade no desenvolvimento de aplicações desktop

De que se trata o artigo:

Uso da biblioteca Beans Binding para implementação do padrão Presentation Model em interfaces Swing para aplicações Java e como o uso desta técnica permite construir interfaces desktop para sistemas Java de forma simples e produtiva.

 

Para que serve:

Fornecer um meio para implementar clientes desktop ricos capazes de intercambiar dados automaticamente entre a interface e o modelo de negócio. Permite também controlar o comportamento de uma tela apenas trabalhando com um modelo de apresentação simples e reutilizável, sem a necessidade de manipulação direta de componentes gráficos.

 

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

Ao analisar as alternativas de interfaces para clientes ricos de sistemas corporativos, pois é importante considerar os benefícios da utilização de interfaces Swing e as tecnologias que facilitam o desenvolvimento e implantação como o Beans Binding e o Java Webstart.

 

Swing + Beans Binding:

O binding (ou vinculação) de propriedades de objetos simples a propriedades de componentes gráficos do Swing permite construir interfaces que trocam dados automaticamente entre a interface gráfica e as entidades de um sistema. Também permite implementar de forma simples o padrão Presentation Model, através do qual é possível controlar o comportamento das telas apenas trabalhando com um modelo de apresentação simples e reutilizável, sem a necessidade de manipulação direta de componentes gráficos.

  

Este artigo apresenta a API de Beans Binding e como seu uso é integrado com o Swing GUI Builder do NetBeans 6.5 (anteriormente conhecido como Matisse). Veremos como a API de binding consegue sincronizar as propriedades de diferentes objetos e particularmente de componentes gráficos do Swing. Finalmente, será explicado como esta API pode ser usada como ferramenta facilitadora para implementação do padrão de projeto chamado de Presentation Model.

Java no desktop?

Esta pergunta talvez ainda seja feita pelos desenvolvedores mais experientes. Na realidade, quem conviveu com os primeiros anos do Java tem todo o direito de questionar a viabilidade deste tipo de aplicação. O Swing trouxe componentes gráficos elegantes baseados num modelo MVC, mas não tão simples de trabalhar. Os gerenciadores de layouts, apesar de eficientes, não tinham a agilidade de ambientes WYSIWYG para prototipação rápida de telas.

Porém, com o tempo a situação mudou bastante. A plataforma e as IDEs evoluíram. Hoje, com as novas ferramentas e com o Java Webstart para distribuição automatizada, uma interface desktop para aplicações corporativas é uma alternativa às interfaces Web não apenas viável, mas também muito produtiva e eficiente.

O recente lançamento JavaFX é o último avanço nesta escalada, mas ainda é uma tecnologia em processo de amadurecimento que aos poucos vai ganhar suporte mais completo das IDEs. Uma das features interessantes da JavaFX foi o suporte nativo ao binding de propriedades (ou “vinculação”, em tradução livre)[1]. Porém, fora da JavaFX também é possível implementar a vinculação de propriedades entre dois objetos, e esta é uma das ferramentas mais interessantes para acelerar o desenvolvimento de aplicações desktop. Neste artigo vamos demonstrar como a biblioteca BeansBinding implementa esse processo e como utilizá-lo de forma produtiva através do suporte oferecido pelo NetBeans 6.5.

Beans Binding

Manter duas propriedades de dois objetos em sincronia é mais complicado do que parece, principalmente se isso deve ser encapsulado em uma API com baixo nível de intrusão no código de negócio.

De forma rápida e crua, é possível vincular a propriedade de dois objetos como na forma usada na Listagem 1. Após este trecho de código, o texto “Zé” é impresso. Enquanto o binding estiver ativo, qualquer alteração na propriedade nome do objeto c1 é automaticamente refletida em c2 (e vice-versa). A API Beans Binding é baseada nas especificações de propriedades JavaBeans e na capacidade de instalar escutadores de estados nos objetos a serem sincronizados.

 

Listagem 1. Uso manual do BeansBinding

Contato c1 = new Contato();

Contato c2 = new Contato();

Binding binding = Bindings.bind(UpdateStrategy.READ_WRITE, c1,

BeanPropery.create("nome"), c2, BeanProperty.create("nome"));

Binding.bind();

c1.setNome("Zé");

System.out.println(c2.getNome());

 

Porém, esta automação exige que a classe Contato respeite o contrato de definição de propriedades e publicação de eventos da especificação JavaBeans. De forma mais objetiva, o Beans Binding exige que a classe implemente os padrões setters e getters de nomeação para encapsular propriedades, e a disponibilização dos métodos addPropertyChangeListener() e removePropertyChangeListener(). Essas exigências podem ser observadas na Listagem 2.

 

Listagem 2. Classe Contato

package org.morgade.exemplo.entity;

 

import java.beans.PropertyChangeListener;

import java.beans.PropertyChangeSupport;

 

public class Contato {

  private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    4 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Janiel Santana
Alguem tem o codigo da revista java magazine 70? eu estou precisando, alguem pode me ajudar.
[há +1 mês] - Responder

 

Devmedia - Equipe De Moderacao
janiel, para baixar o código fonte da edição, basta ir na home da revista e clique na opção "código-fonte", logo acima da imagem da revista.
[há +1 mês] - Responder
 

Diogo Assiz Menon
Estou tentando desenvolver o exemplo utilizando um JFormattedTextField mas estou tendo problemas para carregar os valores do objeto, pois o netbeans executa a inserção da mascara apos passar os dados do objeto para o componente, como resolvo esse problema?
[há +1 mês] - Responder
 

Dyego Souza Do Carmo
você precisa aplicar depois da mascara o seu texto... manualmente , o netbeans apenas coloca ele mas vc tem que setar novamente obedecendo a mascara e a politica escolhida no jtextfield
[há +1 mês] - Responder
 



Publicidade
Autor
Marcelo Burgos Morgade Cortizo

É Analista de Sistemas Pleno da PETROBRAS S.A., Msc. em Redes de Computadores e entusiasta do Java há quase 10 anos.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
1   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03