快速业务通道

Swing通用数据验证模块 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
就可 以了,我称这个类为HibernateValidationUI,代码如下:

package de.jingge.view; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.text.JTextComponent; import org.hibernate.validator.ClassValidator; import org.hibernate.validator.InvalidValue; import org.jdesktop.beansbinding.ELProperty; import org.jdesktop.beansbinding.PropertyStateEvent; import org.jdesktop.beansbinding.PropertyStateListener; import org.jdesktop.jxlayer.JXLayer; import org.jdesktop.jxlayer.plaf.AbstractLayerUI; /** * Header: * Description: A layerUI which will validate the referenced property value of * the object each time when the paint() method is called. * The value of the given object property will be observed. * Note: This UI works only with {@link JXLayer}. Any change of the property * will force repainting the UI. The work process looks like: property changed -> * jxlayer will be repainted -> the paint() method of this UI will be called. * The logic of validation will be handled by the Hibernate validator * framework. * */ public class HibernateValidationUI extends AbstractLayerUI<jTextComponent> { private Object object; private String propertyName; private ClassValidator validator; private ELProperty elProperty; private PropertyStateListener propertyChangeHandler; public HibernateValidationUI(Object obj, String propertyName) {    this.object = obj;    this.propertyName = propertyName;    propertyChangeHandler = new PropertyChangeHandler();    validator = new ClassValidator(obj.getClass());    elProperty = ELProperty.create("${" + propertyName + "}"); } public void installUI(JComponent c) {    super.installUI(c);    elProperty.addPropertyStateListener(object, propertyChangeHandler); } public void uninstallUI(JComponent c) {    super.uninstallUI(c);    elProperty.removePropertyStateListener(object, propertyChangeHandler); } protected void paintLayer(Graphics2D g2, JXLayer<jTextComponent> l) {    super.paintLayer(g2, l);    InvalidValue[] validationMessages = validator.getInvalidValues(object,        propertyName);    if (validationMessages.length > 0) {      BufferedImage image = Java2DIconFactory.createErrorIcon();      g2.drawImage(image, l.getWidth() - image.getWidth() - 1,          l.getHeight() - 8, null);      l.getView().setToolTipText(validationMessages[0].getMessage());      return;    }    l.getView().setToolTipText(null); } boolean isValid() {    return validator.getInvalidValues(object, propertyName).length == 0; } class PropertyChangeHandler implements PropertyStateListener {    @Override    public void propertyStateChanged(PropertyStateEvent pse) {      setDirty(true);    } } }

Swing通用数据验证模块(4)

时间:2011-08-13 葛京

这个HibernateValidationUI类只有一个构建器,它接收两个参数,一个是source object,也就是我 们要修改的那个Bean类的实例

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号