Cxb p = new Cxb();
p.setJifujieId(201);
p.setZhujie("201");
cxbList.add(p);
jTable1.updateUI();//不刷新没反应,一刷新报错如下:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 24, Size: 24
    at java.util.ArrayList.rangeCheck(ArrayList.java:604)
    at java.util.ArrayList.get(ArrayList.java:382)
    at org.jdesktop.swingbinding.impl.ListBindingManager$ColumnDescriptionManager.validateBinding(ListBindingManager.java:191)
    at org.jdesktop.swingbinding.impl.ListBindingManager.valueAt(ListBindingManager.java:99)
    at org.jdesktop.swingbinding.JTableBinding$BindingTableModel.getValueAt(JTableBinding.java:713)
    at javax.swing.JTable.getValueAt(JTable.java:2720)
    at javax.swing.JTable.prepareRenderer(JTable.java:5718)
.....................绑定是这样的:
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cxbList, jTable1);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${jifujieId}"));
        columnBinding.setColumnName("Jifujie Id");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${zhujie}"));
        columnBinding.setColumnName("Zhujie");
        columnBinding.setColumnClass(String.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPane1.setViewportView(jTable1);添加行后如果用jtable1.getmodel().getrowcount()看确实是多了一行。
但如果用jtable1.getmodel().getvalueat(那个newrow,1)就会报和上面一样的错。
除非用bindinggroup.unbind();bindinggroup.bind();重新绑定倒是可以。简直让我怀疑ide出了问题。
哪位高人给指点一二,感激不尽。netbeansbind刷新jtable数组越界

解决方案 »

  1.   

    如果谁能用这种方法插入成功,请告诉我,我怀疑ide可能有问题。如果你能插成功,我试试重装软件。
      

  2.   

    在netbeans的论坛上找到的办法:
    Solution: The List which is bound to jTable as content must be set to observable. It is false by default. I think it prevents the List to be updated when it is set to false. Therefore index and table size do not match and causes the ArrayLists RangeCheck to fail... 
    虽然没人解答,但是希望给后人一点帮助吧。