Spec-Zone .ru
спецификации, руководства, описания, API
След: JavaBeans (ТМ)
Урок: Запись Компонентов JavaBeans
Свойства
Домашняя страница > JavaBeans (ТМ) > Запись Компонентов JavaBeans

Свойства

Чтобы определить свойство в бобе class, предоставьте общедоступного метода get и методы метода set. Например, следующие методы определяют int свойство вызывают mouthWidth:

public class FaceBean {
    private int mMouthWidth = 90;

    public int getMouthWidth() {
        return mMouthWidth;
    }
    
    public void setMouthWidth(int mw) {
        mMouthWidth = mw;
    }
}

Инструмент разработчика как NetBeans распознает имена методов и показывает mouthWidth свойство в его списке свойств. Это также распознает тип, int, и предоставляет соответствующему редактору, таким образом, свойством можно управлять во время проектирования.

Этот пример показывает свойство, чем может быть считан и записан. Другие комбинации также возможны. У свойства только для чтения, например, есть метод метода get, но никакой метод set. У свойства только для записи есть метод метода set только.

Особый случай для boolean свойства позволяют методу средства доступа быть определенным, используя is вместо get. Например, средство доступа для a boolean свойство running мог быть следующие:

public boolean isRunning() {
    // ...
}

Различные специализации основных свойств доступны и описываются в следующих разделах.

Индексируемые свойства

Индексируемое свойство является массивом вместо единственного значения. В этом случае боб class обеспечивает метод для получения и установки всего массива. Вот пример для int[] свойство вызывают testGrades:

public int[] getTestGrades() {
    return mTestGrades;
}

public void setTestGrades(int[] tg) {
    mTestGrades = tg;
}

Для индексируемых свойств боб class также обеспечивает методы для получения и установки определенного элемента массива.

public int getTestGrades(int index) {
    return mTestGrades[index];
}

public void setTestGrades(int index, int grade) {
    mTestGrades[index] = grade;
}

Связанные Свойства

Связанное свойство уведомляет слушателей, когда его значение изменяется. У этого есть две импликации:

  1. Боб class включает addPropertyChangeListener() и removePropertyChangeListener() методы для того, чтобы управлять слушателями боба.
  2. Когда связанное свойство изменяется, боб отправляет a PropertyChangeEvent его зарегистрированным слушателям.

PropertyChangeEvent и PropertyChangeListener живой в java.beans пакет.

java.beans пакет также включает class, PropertyChangeSupport, это заботится о большей части работы связанных свойств. Этот удобный class отслеживает слушателей свойства и включает метод удобства, который запускает события изменения свойства во всех зарегистрированных слушателей.

Следующий пример показывает, как Вы могли сделать mouthWidth свойство связанное использование свойства PropertyChangeSupport. Необходимые дополнения для связанного свойства показывают полужирным.

import java.beans.*;

public class FaceBean {
    private int mMouthWidth = 90;
    private PropertyChangeSupport mPcs =
        new PropertyChangeSupport(this);

    public int getMouthWidth() {
        return mMouthWidth;
    }
    
    public void setMouthWidth(int mw) {
        int oldMouthWidth = mMouthWidth;
        mMouthWidth = mw;
        mPcs.firePropertyChange("mouthWidth",
                                   oldMouthWidth, mw);
    }

    public void
    addPropertyChangeListener(PropertyChangeListener listener) {
        mPcs.addPropertyChangeListener(listener);
    }
    
    public void
    removePropertyChangeListener(PropertyChangeListener listener) {
        mPcs.removePropertyChangeListener(listener);
    }
}

Связанные свойства могут быть связаны непосредственно к другим бобовым свойствам, используя инструмент разработчика как NetBeans. Вы могли, например, взять value свойство компонента ползунка и связывает это с mouthWidth свойство, показанное в примере. NetBeans позволяет Вам делать это, не пишущий кода.

Ограниченные Свойства

Ограниченное свойство является специальным видом связанного свойства. Для ограниченного свойства боб отслеживает ряд слушателей вето. Когда ограниченное свойство собирается измениться, со слушателями консультируются об изменении. У любого из слушателей есть шанс наложить вето на изменение, когда свойство остается неизменным.

Слушатели вето являются отдельными от слушателей изменения свойства. К счастью, java.beans пакет включает a VetoableChangeSupport class, который значительно упрощает ограниченные свойства.

Изменения к mouthWidth пример показывают полужирным:

import java.beans.*;

public class FaceBean {
    private int mMouthWidth = 90;
    private PropertyChangeSupport mPcs =
        new PropertyChangeSupport(this);
    private VetoableChangeSupport mVcs =
        new VetoableChangeSupport(this);

    public int getMouthWidth() {
        return mMouthWidth;
    }
    
    public void
    setMouthWidth(int mw) throws PropertyVetoException {
        int oldMouthWidth = mMouthWidth;
        mVcs.fireVetoableChange("mouthWidth",
                                    oldMouthWidth, mw);
        mMouthWidth = mw;
        mPcs.firePropertyChange("mouthWidth",
                                 oldMouthWidth, mw);
    }

    public void
    addPropertyChangeListener(PropertyChangeListener listener) {
        mPcs.addPropertyChangeListener(listener);
    }
    
    public void
    removePropertyChangeListener(PropertyChangeListener listener) {
        mPcs.removePropertyChangeListener(listener);
    }

    public void
    addVetoableChangeListener(VetoableChangeListener listener) {
        mVcs.addVetoableChangeListener(listener);
    }
    
    public void
    removeVetoableChangeListener(VetoableChangeListener listener) {
        mVcs.removeVetoableChangeListener(listener);
    }
}

Обеспечение конструкторских работ в NetBeans

Образцы кодирования для того, чтобы создать бобовые свойства являются прямыми, но иногда трудно сказать, получаете ли Вы все корректное. У NetBeans есть поддержка образцов свойства, таким образом, можно сразу видеть результаты, поскольку Вы пишете код.

Чтобы использовать в своих интересах эту функцию, смотрите на область Navigator, которая обычно находится в левом нижнем углу окна NetBeans. Обычно, эта область находится в Задействованном режиме Представления, который показывает все методы и поля, определенные в текущем class.

Щелкните по полю комбинированного списка, чтобы переключиться на Бобовое представление Образцов. Вы будете видеть список свойств, которые NetBeans может вывести из Ваших определений метода. NetBeans обновляет этот список, как Вы вводите, делая это удобный способ проверить Вашу работу.

В следующем примере NetBeans нашел чтение-запись mouthWidth свойство и чтение-запись индексируются testGrades свойство. Кроме того, NetBeans распознал это FaceBean позволяет регистрацию обоих PropertyChangeListeners и VetoableChangeListeners.

Бобовый Навигатор образцов NetBeans

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Запись Компонентов JavaBeans
Следующая страница: Методы