Galera,
tenho um bean “idiota”, com uma propriedade chamada “nome”, que eu estou tentando expor com uma implementação de BeanInfo, ao invés de usar o mecanismo default de instrospection. Eis o código do bean:
[code]
public class BeanOla extends Canvas implements Serializable {
PropertyChangeSupport gerenteDeMudancas = new PropertyChangeSupport(this);
private String nome;//exemplo de uma propriedade “bound”
public String getNome()
{
return nome;
}
public void setNome(String nome)
{
String velho = this.nome;
this.nome = nome;
gerenteDeMudancas.firePropertyChange("nome",velho, nome);
}
public BeanOla()
{
setSize(60,40);
setBackground(Color.red);
}
//gerenciamento dos listeners de nome
public void addPropertyChangeListener(String nomeDaPropriedade, PropertyChangeListener pcl){
gerenteDeMudancas.addPropertyChangeListener(nomeDaPropriedade, pcl);
}
public void removePropertyChangeListener(String nomeDaPropriedade, PropertyChangeListener pcl)
{
gerenteDeMudancas.removePropertyChangeListener(nomeDaPropriedade, pcl);
}
}[/code]
Agora, o código da classe que implementa BeanInfo:
public class BeanOlaBeanInfo extends SimpleBeanInfo
{
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor nome =
new PropertyDescriptor("nome", BeanOla.class);
nome.setBound(true);
PropertyDescriptor rv[] =
{nome};
return rv;
} catch (IntrospectionException e) {
throw new Error(e.toString());
}
}
public java.awt.Image getIcon(int iconKind) {
return loadImage("beanIcon.GIF");
}
Quanto ao icone, perfeito, ele aparece lá no toolbox, lindinho. Mas com ou sem a minha implementação do método getPropertyDescriptorsacima, não tem jeito de eu enxergar a propriedade nome na beanbox…
Alguém sabe dizer o que está faltando?
Ah, o manifest:
Manifest-Version: 1.0
Created-By: NetBeans IDE
Specified-By: beaninfo.jarContent
Java-Bean: true
Name: BeanOla.class
Fiz tudo como manda o figurino, ou melhor, o Java Tutorial… :?