XI Jornada de Informática Controlando Projetos com Netbeans e Subversion.
Programação com Netbeans
-
Upload
angelo-silva -
Category
Documents
-
view
397 -
download
1
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