【问题标题】:ClassCastException Beansbinding JavaClassCastException Beansbinding Java
【发布时间】:2012-11-21 19:01:47
【问题描述】:

你能告诉我为什么我在这里得到ClassCastException 异常吗?

protected void initDataBindings() {
    BeanProperty<Apprentice, String> apprenticeBeanProperty = BeanProperty.create("vorname");
    ObjectProperty<JTextField> jTextFieldObjectProperty = ObjectProperty.create();
    AutoBinding<Apprentice, String, JTextField, JTextField> autoBinding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, apprentice, apprenticeBeanProperty, txtVorname, jTextFieldObjectProperty);
    autoBinding.bind();
}

这是文本字段:

        {
            txtVorname = new JTextField();
            //txtVorname.setPreferredSize(new Dimension(txtVorname.getPreferredSize().width + 160, txtVorname.getPreferredSize().height));
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 1;
            gbc.gridy = 0;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            rightPanel.add(txtVorname, gbc);
        }

Apprentice.java 具有属性“vorname”(德语为名字),它是带有 getter 和 setter 的私有字段。

private String vorname;

public Apprentice(){
    ;
}

public String getVorname() {
    return vorname;
}

public void setVorname(String vorname) {
    this.vorname = vorname;
}

【问题讨论】:

    标签: java user-interface jtextfield classcastexception beans-binding


    【解决方案1】:

    我自己找到了解决方案,我绑定的“Self Object”而不是“text”必须是这样的:

    protected void initDataBindings() {
        BeanProperty<Apprentice, String> apprenticeBeanProperty_1 = BeanProperty.create("vorname");
        BeanProperty<JTextField, String> jTextFieldBeanProperty_1 = BeanProperty.create("text");
        AutoBinding<Apprentice, String, JTextField, String> autoBinding_1 = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, apprentice, apprenticeBeanProperty_1, txtVorname, jTextFieldBeanProperty_1);
        autoBinding_1.bind();
    }
    

    还是谢谢:)

    【讨论】: