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数组越界
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数组越界
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...
虽然没人解答,但是希望给后人一点帮助吧。