Programação com Netbeans

download Programação com Netbeans

of 32

Transcript of Programação com Netbeans

  • 7/28/2019 Programao com Netbeans

    1/32

    JavaBeansJava Deployment Course: Aula 8

    por Jorge H C Fernandes([email protected])CESAR-DI-UFPERecife, 1999

  • 7/28/2019 Programao com Netbeans

    2/32

    Referncias

    Sun MicrosystemsDocumentos, Especificaes, Tutoriais, Software, etchttp://java.sun.com/products/beans

    http://java.sun.com/beans/spec.htmlhttp://java.sun.com/docs/books/tutorial/javabeans/index.html

    FlashlineComercializao de Beanshttp://www.flashline.com/components/javabeans.jsp

  • 7/28/2019 Programao com Netbeans

    3/32

    Java Beans

    Objetivos desta Aula

    Apresentar os conceitos que suportam aconstruo de BeansReforar conceitos do modelo detratamento de eventos do AWTCriar e instalar no JBuilder um

    componente de software simples noformato de um Bean

  • 7/28/2019 Programao com Netbeans

    4/32

    Contedo

    O que JavaBeans?Para qu Servem?Principais ConceitosTratamento de Eventos no AWTPropriedadesInstrospecoExemplos

  • 7/28/2019 Programao com Netbeans

    5/32

    O que JavaBeans?

    Um modelo de componente de softwarepara JavaDescrio auto-contida

    ReutilizvelFacilita programao visualPode ser inserido em um palete de

    componentesConsultas e configuraesRumo construo e comercializao desoftware plug-and-play

  • 7/28/2019 Programao com Netbeans

    6/32

    Para qu Servem JavaBeans?

    Blocos de componentes de GUIGeradores de grficos e relatriosPlanilhasInstrumentos de aquisio e display dedados

    Calendrios, Relgios, AgendasEditores

  • 7/28/2019 Programao com Netbeans

    7/32

    GUI de Alguns Beans Comercializadospor Flashline - 1999

  • 7/28/2019 Programao com Netbeans

    8/32

    Principais Conceitos usados noModelo Java Beans

    Eventos, Propriedades e MtodosJavaBeans divulgam um conjunto bem definido de eventos queproduzem, e permitem que outros objetos registrem interessena ocorrncia destes eventosJavaBeans divulgam um conjunto bem definido de propriedadese mtodos, permitindo que as propriedades sejam alteradas eos mtodos sejam invocadosIntrospeco e ReflexividadeUm JavaBean usa um padro de codificao que permite queuma ferramenta de edio visual interaja com o componente ededuza/altere suas caractersticas (eventos, propriedades emtodos) em build-time ou run-time

    Persistncia e EmpacotamentoCapacidade de armazenar, recuperar ou transmitir umcomponente atravs de uma mdia digital (disco, conexo derede, etc)

  • 7/28/2019 Programao com Netbeans

    9/32

    Cdigo de um Bean Minimalista

    import java.awt.*;import java.io.Serializable;

    public class SimpleBeanextends Canvas

    implements Serializable {

    private Color cor = Color.green;

    public SimpleBean() {setSize(60,40);setBackground(Color.red);

    }

    public void paint(Graphics g) {g.setColor(cor);g.fillRect(20, 5, 20, 30);

    }

    public void setCor(Color newCor) {cor =newCor;}

    public Color getCor() {return cor;

    }}

  • 7/28/2019 Programao com Netbeans

    10/32

    Tratamento de Eventos

  • 7/28/2019 Programao com Netbeans

    11/32

    TextField TextArea

    CheckBox

    Button

    Canvas

    Panel

    Label

    TextComponent

    List

    ScrollBar

    Component

    Window

    Container

    EventObject

    AWTEvent

    Adjus tementEvent

    ItemEventTextEvent

    ActionEvent

    ComponentEvent

    FocusEvent PaintEvent

    WindowEventContainerEvent

    InputEvent

    Frame Dialog

    Choice

    KeyEvent MouseEvent

    Hierarquia de

    Componentes e Eventos do AWT

  • 7/28/2019 Programao com Netbeans

    12/32

    Padro de Codificao paraEventos

    Categorias de evento devem ser criadas (ou reutilizadas)class Event extends EventObject

    Interfaces de consumidores evento devem ser criadas (ou reutilizadas)interface EventListener extends EventListener {

    public void (Event event);

    public void (Event event);}Produtores de evento (JavaBeans) devem conter mtodos para cadastrarconsumidores de eventospublic void addListener(Listener);

    Consumidores de evento (usrios do JavaBean) devem implementar ainterface adequadaclass implements Listener

  • 7/28/2019 Programao com Netbeans

    13/32

    Interfaces e Classes paraObservadores de Eventos do AWT

  • 7/28/2019 Programao com Netbeans

    14/32

    actionPerformed(ActionEvent)adjustementValueChanged(AdjustementEvent)

    ComponentAdaper

    ContainerAdapter

    KeyAdapter FocusAdapter

    WindowAdapter

    MouseMotionAdapter

    MouseAdapter

    FocusListener MouseListener

    ComponentListener

    ContainerListener

    ActionListener

    AdjustementListener

    KeyListener

    WindowListener

    MouseMotionListener

    TextListener

    ItemListener

    EventListener

    componentHidden(ComponentEvent)componentMoved(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)itemStateChanged(ItemEvent)textValueChanged(TextEvent)

    windowActivated(WindowEvent)windowClosed(WindowEvent)windowClosing(WindowEvent)windowDeactivated(WindowEvent)windowDeiconified(WindowEvent)windowIconified(WindowEvent)

    windowOpened(WindowEvent)mouseDragged(MouseEvent)mouseMoved(MouseEvent)

    componentAdded(ContainerEvent)componentRemoved(ContainerEvent)

    focusGained(FocusEvent)focusLost(FocusEvent)

    mouseClicked(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mousePressed(MouseEvent)mouseReseased(MouseEvent)

    keyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)

  • 7/28/2019 Programao com Netbeans

    15/32

    Propriedades em JavaBeans

  • 7/28/2019 Programao com Netbeans

    16/32

    Propriedades

    Atributos ou caractersticas que sopublicamente expostas pelo componentePadres de Design para propriedades permitem

    Descobrir que propriedades um Bean expeDeterminar atributos de leitura e gravao da propriedadeDeterminar o tipo da propriedadeMostrar o nome e valor das propriedades (em um formulrio);

    Alterar o valor das propriedades (design-time)Categorias de PropriedadesSimples, Indexadas, Ligadas, Restritas

  • 7/28/2019 Programao com Netbeans

    17/32

    Propriedades Simples

    Padro de codificaopublic class MeuJ avaBean {private = ;...

    public get();public void set(value);...

    }

    Propriedades tambm podem sercomputadas (em vez de armazenadas emvariveis)

  • 7/28/2019 Programao com Netbeans

    18/32

    Propriedades Indexadas

    Contem uma coleo de valoresDois Padres de Codificaopublic class MeuJ avaBean {

    public [] get();public void set([] value);

    }

    public class MeuJ avaBean {public get(int index);public void set(int index, < PropertyType>value);

    }

  • 7/28/2019 Programao com Netbeans

    19/32

    Propriedades Ligadas

    Usadas quando vrios objetos precisamser automaticamente notificados demudanas no valor de uma propriedade

    Classes e interfaces envolvidasPropertyChangeListenerPropertyChangeEventPropertyChangeSupport

  • 7/28/2019 Programao com Netbeans

    20/32

    Classes e Interfaces paraPropriedades Ligadas

    PropertyChangeListenerInterface implementada pelo objeto que quer ser notificado

    PropertyChangeEventEvento que contm informaes sobre a propriedade que

    mudou e os valores antes e aps a modificaoPropertyChangeSupport

    Implementao bsica de componente que aceitacadastramento e descadastramento de listeners interessados e

    os notifica das modificaesO JavaBean pode herdar de PropertyChangeSupport ouinternalizar um objeto desta classe.

    Object getNewValue()Object getOldValue()Object getPropagationId() -- reservadoString getPropertyName()

    void setPropagationId(Object)

    addPropertyChangeListener(PropertyChangeListener)firePropertyChange(String, Object, Object)removePropertyChangeListener(PropertyChangeListener)

    void propertyChange(PropertyChangeEvent)

  • 7/28/2019 Programao com Netbeans

    21/32

    Padro de Codificao para Beanscom Propriedades Ligadas

    import java.beans.*;

    class MyButton extends Button {private PropertyChangeSupport changes = new PropertyChangeSupport(this);

    public void addPropertyChangeListener(PropertyChangeListener l) {

    changes.addPropertyChangeListener(l);}public void removePropertyChangeListener(PropertyChangeListener l) {

    changes.removePropertyChangeListener(l);}

    public void setLabel(String newLabel) {String oldLabel =label;label =newLabel;changes.firePropertyChange("label", oldLabel, newLabel);

    }

    }

  • 7/28/2019 Programao com Netbeans

    22/32

    Listener de PropriedadesLigadas (Usando Adaptador)

    public class MyClass {MyButton button = new MyButton();...PropertyChangeAdapter adapter =new PropertyChangeAdapter();...

    button.addPropertyChangeListener(adapter);...class PropertyChangeAdapter implements PropertyChangeListener {

    public void propertyChange(PropertyChangeEvent e) {

    reporter.reportChange(e);}

    }}

  • 7/28/2019 Programao com Netbeans

    23/32

    Propriedades Restritas

    Uma mudana no valor da propriedadepode ser vetada por um ou mais VetoableChangeListeners

    Classes envolvidas VetoableChangeListenerPropertyChangeEvent

    VetoableChangeSupportPropertyVetoException

  • 7/28/2019 Programao com Netbeans

    24/32

    Classes e Interfaces paraPropriedades Restritas

    VetoableChangeListenerRegistra interesse em vetar propostas de mudanas de valores VetoableChangeSupport

    Implementao bsica de componente que aceitacadastramento e descadastramento de listeners que podemvetar modificaesO JavaBean pode herdar de VetoableChangeSupport ouinternalizar um objeto desta classe

    PropertyVetoExceptionExceo levantada caso haja veto de algum listener

  • 7/28/2019 Programao com Netbeans

    25/32

    Padro de Codificao paraPropriedades Restritas

    class {

    private VetoableChangeSupport vetos =new VetoableChangeSupport(this);public void addVetoableChangeListener(VetoableChangeListener l) {..}

    public void removeVetoableChangeListener(VetoableChangeListener l) {..}

    public void setPreco(int newPreco)throws PropertyVetoException {

    int oldPreco = price;// Notifica os observadores sobre a proposta de mudana.vetos.fireVetoableChange("preco", ..oldPreco.., ..newPreco..);

    // Nenhum observador vetou a mudana. Prossegue com elaspreco = newPreco;changes.firePropertyChange("preco", ..oldPreco.., ..newPreco..));

    }}

  • 7/28/2019 Programao com Netbeans

    26/32

    Introspeco

    java.bean.Instrospector

    MeuJavaBean

    java.bean.BeanInfo

    getBeanInfo()

  • 7/28/2019 Programao com Netbeans

    27/32

    Objeto java.bean.BeanInfo

    Image getIcon(int iconKind)

    MethodDescriptor[] getMethodDescriptors()

    EventSetDescriptor[] getEventSetDescriptors()

    BeanDescriptor getBeanDescriptor()

    int getDefaultEventIndex()

    PropertyDescriptor[] getPropertyDescriptors()int getDefaultPropertyIndex()

    BeanInfo[] getAdditionalBeanInfo()

  • 7/28/2019 Programao com Netbeans

    28/32

    Reflexividade(java.lang.reflect)

    Permite manipular classes, interfaces eobjetos contidos na mquina virtualUsada na construo de depuradores,ferramentas de construo de GUI,browsers de classesExecutar em run-time, vrias operaesque normalmente so programadas

  • 7/28/2019 Programao com Netbeans

    29/32

    Classes de Suporte aReflexividade

    java.lang.reflect.Array -mtodos para criar e acessararrays de forma dinmicajava.lang.reflect.Class -representa informao sobre

    classes e interfacesjava.lang.reflect.Constructor - prov informaes e acessoaos construtores de objetos deuma classe. Permite instanciaruma classe dinamicamentejava.lang.reflect.Field - provinformaes e acesso dinmicoa um atributo de uma classeou interface

    java.lang.reflect.Method -prov informao e acesso aum mtodo de uma classe ouinterface. Permte que se crie eexecute invocao dinmica do

    mtodo.java.lang.reflect.Modifier -prov mtodos e constantesque fornecem informaosobre os modificadores deacesso de uma classe e deseus atributos e mtodos.java.lang.Object - prov omtodo getClass()

  • 7/28/2019 Programao com Netbeans

    30/32

    Possibilidades de Uso deReflexo

    Determinar a classe de um objetoObter informao sobre modificadores da classe, seus mtodos,campos, construtores e superclassesObservar quais constantes e mtodos fazem parte de uma interfaceCarregar uma classe na mquina virtual, cujo nome s conhecidoem tempo de execuoLer e modificar o valor do campo de um objeto, mesmo que onome do campo s seja conhecido em tempo de execuoInvocar um mtodo de um objeto, mesmo que o mtodo s tenhasido conhecido em tempo de execuoCriar um novo array cujo tamanho e tipo dos componentessosejam conhecidos em runtime, e modificar os componentes doarray

  • 7/28/2019 Programao com Netbeans

    31/32

    Outras Caractersticas deJavaBeans

    Editor de propriedades customizadoJava Activation Framework - JAF Ajuste fino de serializao

    interface ExternalizableDrag & Drop

  • 7/28/2019 Programao com Netbeans

    32/32

    Exerccio

    Construa um SimpleBean e o insira napaleta de componentes do JBuilder