📄 constrainedattrbean.java
字号:
package chapter7.attribute;
import java.awt.*;
import java.beans.*;
public class ConstrainedAttrBean extends Canvas {
private PropertyChangeSupport changes = new PropertyChangeSupport(this);
private VetoableChangeSupport vetos = new VetoableChangeSupport(this);
int ourPriceInCents; //ourPriceInCents是一个Constrained属性
public void setPriceInCents(int newPriceInCents) throws PropertyVetoException {
int oldPriceInCents = ourPriceInCents; // 先保存原来的属性值
/*触发属性改变否决事件*/
vetos.fireVetoableChange("priceInCents", new Integer(oldPriceInCents),
new Integer(newPriceInCents));
/*若有其他对象否决priceInCents的改变,则程序抛出例外,不再继续执行下面的两条语句,方法结束。若无其他对象否决priceInCents的改变,则在下面的代码中把ourPriceIncents赋予新值,并触发属性改变事件*/
ourPriceInCents = newPriceInCents;
changes.firePropertyChange("priceInCents", new Integer(oldPriceInCents),
new Integer(newPriceInCents));
}
/*为PriceInCents属性预留接口,使其他对象可注册入PriceInCents否决改变监听者队列中*/
public void addVetoableChangeListener(VetoableChangeListener l) {
vetos.addVetoableChangeListener(l);
}
/*为PriceInCents属性预留接口,使其他对象可从PriceInCents否决改变监听者队列中注销*/
public void removeVetoableChangeListener(VetoableChangeListener l) {
vetos.removeVetoableChangeListener(l);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -