博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
How do I listen for a constrained JavaBean prop...
阅读量:6311 次
发布时间:2019-06-22

本文共 2360 字,大约阅读时间需要 7 分钟。

  hot3.png

The constrained property change is fired when a bean's value is about to change. When aVetoableChangeListener veto the value change the bean's value will be rolled-back to the previous value. In this example we have a constrained property called interest.

package org.kodejava.example.bean;import java.beans.VetoableChangeSupport;import java.beans.PropertyVetoException;public class VetoBean {    private double interest;    private VetoableChangeSupport vcs = new VetoableChangeSupport(this);    public VetoBean() {        vcs.addVetoableChangeListener(new VetoChangeListener());    }    public double getInterest() {        return interest;    }    public void setInterest(double interest) {        try {            vcs.fireVetoableChange("interest", new Double(this.interest), new Double(interest));            this.interest = interest;        } catch (PropertyVetoException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        VetoBean bean = new VetoBean();        bean.setInterest(10.99);        bean.setInterest(15.99);                //        // PropertyVetoException will be thrown beacuse the interest value         // should not exceed 20.00.        //        bean.setInterest(20.99);    }}package org.kodejava.example.bean;import java.beans.VetoableChangeListener;import java.beans.PropertyChangeEvent;import java.beans.PropertyVetoException;public class VetoChangeListener implements VetoableChangeListener {    /**     * This method gets called when a constrained property is changed.     *     * @param evt a PropertyChangeEvent object describing the     *            event source and the property that has changed.     * @throws java.beans.PropertyVetoException     *          if the recipient wishes the property     *          change to be rolled back.     */    public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {        String eventName = evt.getPropertyName();        if (eventName.equalsIgnoreCase("interest")) {            double interest = ((Double) evt.getNewValue()).doubleValue();            if (interest > 20.00) {                throw new PropertyVetoException("Interest must be below 20.00", evt);                            }            System.out.println("Interest applied = " + interest);        }    }}

转载于:https://my.oschina.net/jsan/blog/57638

你可能感兴趣的文章
编程思想之多线程与多进程系列(上)
查看>>
我是如何击败Java自带排序算法的
查看>>
Gartner::未来五年有颠覆性的IT技术都在这里
查看>>
开发一个Linux调试器(五):源码和信号
查看>>
Python中的垃圾回收机制
查看>>
企业大数据分析实践指南、总结与展望
查看>>
智能家庭本周锋闻:属于未来的Apple Watch
查看>>
警惕手机病毒成偷跑流量“陷阱”
查看>>
大数据挖掘技术之DM经典模型(上)
查看>>
《Cocos2D权威指南》——2.4 碰撞检测
查看>>
如何无痛集成超融合平台与现有硬件?
查看>>
诺基亚联手欧洲智慧城市交通流量管理测试机构实现安全空中作业
查看>>
《Android程序设计》一3.3 其他Android组件
查看>>
《Linux内核精髓:精通Linux内核必会的75个绝技》一第1章 内核入门
查看>>
step-by-step通过数据集成同步数据到HBase
查看>>
斯坦福最新发布首份AI100报告,2030年我们的生活会是什么样子?
查看>>
Efficient Estimation of Word Representations in Vector Space
查看>>
随机机器学习算法需要试验多少次,才足以客观有效的反映模型性能?
查看>>
大数据风控时代下好车贷等互联网金融平台有哪些特点
查看>>
英特尔将业务重点转移到物联网
查看>>