【发布时间】:2012-10-01 22:19:42
【问题描述】:
我使用JDateChooser 在我的表单中编辑日期。
短版:我需要区分 JDateChooser 上的用户日期编辑和程序属性更改。
解决方法:我找到了一个名为 dateSelected 的受保护 JDateChooser 属性,这正是我所需要的(afaics 没有 getter)所以可能我必须创建自己的扩展 JDateChooser 类并为这个属性做一个吸气剂。这里的问题是我想让这个自定义版本可以从 Netbeans Palette 中拖动,而我的自定义 JDateChooser 不会。
加长版: 首先,我从数据库中获取日期,然后使用 JDateChooser 的 setDate() 方法在 GUI 中设置日期。当用户使用选择器选择新日期时,我想编辑数据库的日期。为此,我在 JDateChooser 对象上侦听 PropertyChange 事件(寻找“日期”更改)。在数据库中设置新日期后,我想刷新数据(我从数据库中获取整个记录)并从数据库中设置日期(如果有任何错误,它会被设置回数据库中的任何内容目前)。
问题是,当我从数据库设置日期时,当用户更改日期时会触发相同的事件,然后我的“刷新”机制会更新 JDateChooser 字段并且我得到无限循环。
我现有的(简化)代码(netbeans):
private void dataStartuChooserPropertyChange(java.beans.PropertyChangeEvent evt) {
if ("date".equals(evt.getPropertyName())) {
JDateChooser wybieraczDat = (JDateChooser) evt.getSource();
updateDatabaseField(wybieraczDat.getDate());
}
}
【问题讨论】:
-
另见Q&A。
-
非常感谢!!我花了几个小时在谷歌上搜索试图让它与动作监听器一起工作。您的代码确实有效。再次感谢!
标签: java swing netbeans jdatechooser