无法将文本字段绑定到NetBeans中JTable中的选定项目

时间:2010-04-01 06:21:57

标签: data-binding netbeans jtable javabeans

我正在尝试使用NetBeans将JTextField绑定到JTable的选定元素。

JTable从AbstractTableModel子类获取其数据,该子类返回Cow对象。目前,每个Cow对象都通过其toString方法显示为String。

我正在尝试将JTextField的 text 属性绑定到在JTable中选择的Cow对象的 name 属性。

我将NetBeans中JTextField的text属性绑定到:

flowTable[${selectedElement.name}]

这会生成以下生成代码行:

org.jdesktop.beansbinding.Binding binding = 
  org.jdesktop.beansbinding.Bindings.createAutoBinding(
    org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, 
    cowTable, 
    org.jdesktop.beansbinding.ELProperty.create("${selectedElement.name}"), 
    cowNameTextField, 
    org.jdesktop.beansbinding.BeanProperty.create("text"));

文本字段的绑定值始终为null。

我做错了什么?

3 个答案:

答案 0 :(得分:0)

您的Cow班级是否有public String getName()方法返回名称?

如果没有,那么你会得到预期的结果。如果是,你可以发布更多的代码(你的数据类,tablemodel,表...)。

答案 1 :(得分:0)

如果您只对表中的String感兴趣,而不是Cow对象本身:

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if(!e.getValueIsAdjusting()) {
             Object value = table.getValueAt(e.getFirstIndex(), COLUMN_X);
             jTextField.setText(value.toString());
        }
    }
);

答案 2 :(得分:0)

您的Cow类是否支持添加PropertyChangeListener?我没有经常使用NetBeans的bean绑定支持,但我记得你需要它。无论如何,更多的代码可以帮助找出问题出在哪里。