Se estiver criando novos componentes ou beans para uso dentro do editor visual (por exemplo, incluir componentes na paleta), você poderá controlar seu comportamento fornecendo uma classe BeanInfo.
Uma classe BeanInfo implementa java.beans.BeanInfo e é utilizada pelo editor visual para determinar o comportamento da visualização de propriedades para o bean e se um personalizador está disponível. O editor visual inclui classes BeanInfo para controles AWT e Swing comuns.
Como a classe BeanInfo contém informações requeridas apenas na hora do design, ela é, geralmente, mantida em um projeto diferente da classe do bean em si e não é incluída quando o bean é implementado. O editor visual para Java utiliza várias regras que permitem associar classes BeanInfo aos beans Java que elas descrevem. Será necessário entender essas regras se você estiver utilizando beans Java tendo classes BeanInfo que você deseja que o editor visual detecte. Por exemplo, se você estiver utilizando um conjunto de terceiros de classes bean Java ou se tiver desenvolvido beans Java e classes BeanInfo que está utilizando.
Para aprender mais sobre as classes BeanInfo, você pode fazer download da especificação JavaBeans a partir de java.sun.com/products/javabeans/docs/.
A classe java.beans.Introspector é utilizada para localizar uma classe BeanInfo para um bean Java. A hora em que isso ocorre é mencionada como introspecção e é feita pelo editor visual na primeira vez que um bean é utilizado. Por exemplo, quando um botão é solto pela primeira vez da paleta, ocorre uma introspecção que tenta localizar a classe BeanInfo correta. Depois da introspecção do bean, os resultados são armazenados em cache para ajudar no desempenho. Porém, quando o editor visual detecta que a classe BeanInfo pode ter sido alterada e o cache é stale, a introspecção ocorrerá novamente.
A introspecção de um bean é feita chamando o método estático getBeanInfo(Class) com a classe bean como o argumento. Por exemplo:
java.beans.Introspector.getBeanInfo(MyJavaBean.class)
O introspector utiliza a lógica a seguir para localizar uma classe BeanInfo para a classe de argumento MyJavaBean. Isso envolve várias etapas seqüenciais e depois de cada etapa bem-sucedida, o introspector pára de procurar. Se alguma etapa falhar, a etapa seguinte será utilizada para tentar uma forma diferente de localizar o bean info.
Se uma classe BeanInfo for localizada para a classe, o introspector não a retornará explicitamente. Em vez disso, ele utiliza seus detalhes para criar uma classe de resultados temporários que implementa java.beans.BeanInfo.
A melhor maneira de entender o caminho de BeanInfo é considerar a máquina virtual Java que é criada para executar a introspecção. Essa máquina virtual recebe um caminho de classe que é formado pelas seguintes entradas:
Tendo criado a máquina virtual, o java.beans.Introspector tem sua lista de pacotes para procurar classes BeanInfo definidas com o método public void setSearchPath(String[]).
Os argumentos para esse método são:
Se o bean que você está gravando estiver herdando atributos de uma superclasse, o BeanInfo padrão não exporá os atributos próprios. Será necessário expô-los explicitamente com o método getAdditionalBeanInfo().
Por exemplo:
public BeanInfo[] getAdditionalBeanInfo() { try { // The following will return all inherited features. return new BeanInfo[] { Introspector.getBeanInfo(MyPanel.class.getSuperclass())}; } catch (IntrospectionException e) { return new BeanInfo[0]; }
Se um atributo próprio não for exposto, o editor visual não irá apresentá-lo, mesmo que ele seja definido no código fonte.
Classes BeanInfo para Classes JRE
Os beans Java para classes incluídas no JRE são fornecidos como parte do editor visual para Java. Eles definem o comportamento de classes como javax.swing.JButton ou javax.swing.JFrame dentro do workbench.Dicas para gravar classes BeanInfo para o editor visual
Esta seção descreve algumas regras que poderão ser empregadas se você estiver gravando uma classe BeanInfo para um bean Java destinado para uso no editor visual para Java.Controlando informações de BeanInfo para desenvolvedores de plug-in
Você pode exercitar o controle sobre como as classes BeanInfo são associadas a uma variável de caminho de classe incluindo uma entrada em um arquivo de manifesto de plug-in.
Tópico pai: Estendendo o Editor Visual para Java
Tarefas Relacionadas
Controlando Informações de BeanInfo para Desenvolvedores de Plug-in
Especificando a Localização das Classes BeanInfo