java - 绑定(bind)抛出异常

标签 java netbeans binding jtable javadb

忙于学校项目,NetBeans 让我沮丧极了。请帮我解决以下错误,并告诉我我做错了什么。

我正忙于绑定(bind)和 Apache Derby。我正在做的是将数据库中的数据绑定(bind)到文本字段。我有一个带有两个选项卡式面板的 JFrame 表单。上面有一张 table 1 ,另一张显示个人记录 2 .

[1]

[2]

这是单个记录 View 上的绑定(bind)编码的摘录:

1    package UserManager;

    import java.util.*;

5    /**
     *
     * @author Johan Brink
     */
    public class Data extends javax.swing.JFrame {
10       Users users = new Users();
         ListIterator<Users>iterator;

         public Users getUsers() {
              return users;
15       }

         public void setUsers(Users users) {
              Users oldUsers = this.users;
              this.users = users;
20            firePropertyChange("users", oldUsers, users);
         }

         /**
          * Creates new form Data
25        */
         public Data() {
              initComponents();
              setLocationRelativeTo(rootPane);
              iterator = usersList.listIterator(0);
30            setUsers(iterator.next());
         }

问题出在第 29 行和第 30 行。这在过去有效,但现在出现错误。我有一个自动创建的实体类等。如果没有第 29 行和第 30 行,除了未列出单个记录信息之外,一切正常。当插入第29行和第30行时,运行时出现如下错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Cannot cast java.util.Date to java.lang.String
    at java.lang.Class.cast(Class.java:3084)
    at org.jdesktop.beansbinding.Binding.convertForward(Binding.java:1312)
    at org.jdesktop.beansbinding.Binding.getSourceValueForTarget(Binding.java:844)
    at org.jdesktop.beansbinding.Binding.refreshUnmanaged(Binding.java:1222)
    at org.jdesktop.beansbinding.Binding.refresh(Binding.java:1207)
    at org.jdesktop.beansbinding.AutoBinding.tryRefreshThenSave(AutoBinding.java:162)
    at org.jdesktop.beansbinding.AutoBinding.sourceChangedImpl(AutoBinding.java:227)
    at org.jdesktop.beansbinding.Binding.sourceChanged(Binding.java:1411)
    at org.jdesktop.beansbinding.Binding.access$1200(Binding.java:38)
    at org.jdesktop.beansbinding.Binding$PSL.propertyStateChanged(Binding.java:1618)
    at org.jdesktop.beansbinding.PropertyHelper.firePropertyStateChange(PropertyHelper.java:212)
    at org.jdesktop.beansbinding.ELProperty.notifyListeners(ELProperty.java:688)
    at org.jdesktop.beansbinding.ELProperty.access$800(ELProperty.java:155)
    at org.jdesktop.beansbinding.ELProperty$SourceEntry.processSourceChanged(ELProperty.java:312)
    at org.jdesktop.beansbinding.ELProperty$SourceEntry.sourceChanged(ELProperty.java:326)
    at org.jdesktop.beansbinding.ELProperty$SourceEntry.propertyChange(ELProperty.java:333)
    at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
    at java.awt.Component.firePropertyChange(Component.java:8382)
    at UserManager.Data.setUsers(Data.java:24)
    at UserManager.Data.<init>(Data.java:34)
    at UserManager.Data$7.run(Data.java:419)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

最佳答案

您没有包含根本问题的代码,但异常表明绑定(bind)代码正在尝试将 String 转换为 Date ...这在 Java 中是一个很大的禁忌!

我怀疑问题在于您的 User 对象中有一个 Date 类型的出生日期字段,并且绑定(bind)对象试图以反射方式为其分配一个 String

如果这是问题所在,那么您需要向相关的 Binding 对象添加自定义的 Converter,以在 StringDate 对象之间进行转换。看来您需要编写一个自定义转换器来完成这项工作。

引用文献:

关于java - 绑定(bind)抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18678233/

相关文章:

java - 使用 netbeans 6.9.1 调试 Maven 测试?

java - 未报告的异常……必须捕获或声明抛出;尽管*抛出*关键字

c# - Silverlight Xaml 中的 ComboBox IsEnabled 绑定(bind)问题

c# - 是否有用于将属性从一个类绑定(bind)到另一个类的开源 C# 库?

带有通配符的 Java 7 nio 列表目录

java - 如何将 `regex` 嵌入到 `By.xpath...` 中?

java - javacv 项目在 32 位和 64 位操作系统上运行是否不同?

java - 如何在 Eclipse IDE for Java 中设置多个默认源文件夹?

java - 没有使用 JNA 获取 C++ 结构

php - 当我在 Laravel 中的 mysql 原始查询的 LIMIT 部分使用绑定(bind)时,为什么会出现 SQLSTATE[42000] 错误?