С помощью класса BeanInfo можно управлять поведением новых компонентов или объектов данных, которые вы создаете для использования в визуальном редакторе для Java (например компонентов, добавляемых в палитру).
Класс BeanInfo реализует java.beans.BeanInfo и используется визуальным редактором для того чтобы определить, как должна вести себя панель свойств объекта JavaBean и доступна ли программа настройки. В состав визуального редактора входят классы BeanInfo общих управляющих элементов AWT и Swing.
Если в классе BeanInfo содержится информация, необходимая только во время проектирования, то он обычно хранится в собственном проекте, отдельно от класса объекта JavaBean, и не развертывается вместе с этим объектом. В визуальном редакторе для Java используется несколько правил, позволяющих связывать классы BeanInfo с объектами JavaBean, которые они описывают. Если вы используете объекты Java с классами BeanInfo и хотите, чтобы эти классы распознавались визуальным редактором, требуется следовать данным правилам. Например, это необходимо для набора классов объектов JavaBean от независимых поставщиков или собственных объекты JavaBean и классов BeanInfo.
Для получения более подробной информации о классах BeanInfo загрузите соответствующую спецификацию по следующей ссылке: java.sun.com/products/javabeans/docs/.
Класс java.beans.Introspector используется для поиска класса BeanInfo объекта JavaBean. Это действие называется внутренним анализом и выполняется визуальным редактором для Java при первом использовании объекта. Например, при первом размещении на форме кнопки из палитры запускается процедура внутреннего анализа, которая пытается найти соответствующий класс BeanInfo. Для повышения производительности результаты анализа JavaBean помещаются в кэш. Однако, если визуальный редактор определяет, что класс BeanInfo был изменен, а кэш устарел, то внутренний анализ повторяется.
Внутренний анализ JavaBean выполняется путем вызова статического метода getBeanInfo(Class) с указанием класса объекта JavaBean в качестве аргумента. Например:
java.beans.Introspector.getBeanInfo(MyJavaBean.class)
При поиске класса BeanInfo для указанного в качестве аргумента класса MyJavaBean программа анализа использует тесты. Если тест выполняется успешно, поиск прекращается. Если тест выполнен неудачно, программа анализа переходит к выполнению следующего теста для поиска класса BeanInfo. Программа анализа применяет следующие логические тесты:
Если для данного класса найден класс BeanInfo, то программа внутреннего анализа не возвращает его явно. Наоборот, она использует его сведения для создания временного класса результатов, который реализует java.beans.BeanInfo.
Для знакомства с путями BeanInfo нужно разобраться в работе виртуальной машины Java, созданной для выполнения внутреннего анализа. Эта виртуальная машина обрабатывает путь к классам, состоящий из следующих записей:
Как только виртуальная машина создана, java.beans.Introspector получает список групп для поиска классов BeanInfo, заданных методом public void setSearchPath(String[]).
Ниже приведены аргументы этого метода:
Если создаваемый объект наследует атрибуты от базового класса, то BeanInfo по умолчанию не экспортирует внутренние атрибуты. Их необходимо явно экспортировать с помощью метода getAdditionalBeanInfo().
Например:
public BeanInfo[] getAdditionalBeanInfo() { try { // Следующее выражение возвращает все наследуемые функции. return new BeanInfo[] { I
Если внутренний атрибут не экспортирован, то он не будет отображаться визуальным редактором для Java, даже если будет находиться в исходном коде.