尝试将数据从jtable显示到控制台时,获取ArrayIndexOutOfBoundsException错误

时间:2014-01-05 05:26:55

标签: java arrays swing jtable

当我尝试显示ArrayIndexOutOfBoundsException dataVectorJtable

时出现console错误

这里的错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 3
    at java.util.Vector.elementAt(Unknown Source)
at javax.swing.table.DefaultTableColumnModel.getColumn(Unknown Source)
at sun.swing.SwingUtilities2.convertColumnIndexToModel(Unknown Source)
at javax.swing.JTable.convertColumnIndexToModel(Unknown Source)
at javax.swing.JTable.getValueAt(Unknown Source)

这里是代码:

ResultSet dbresultset = sqlstatement.executeQuery("select * from ***);
ResultSetMetaData rsmetadata = dbresultset.getMetaData();       
int numcols = rsmetadata.getColumnCount();    

if(tglbtnAdd.isSelected() == true)
  {  while (dbresultset.next())
     {    Vector<Object> row = new Vector<Object>(numcols);
      for (int i = 1; i <= numcols; i++)
        {
             row.addElement( dbresultset.getObject(i) );
        }
         defaultmodel2.addRow(row );

          }

ArrayList<String> numdata = new ArrayList<String>();
for(int count = 0; count <= table_1.getRowCount(); count++){
        numdata.add(table_1.getValueAt(count, 3).toString());
    }
System.out.println(numdata);

1 个答案:

答案 0 :(得分:1)

for(int count = 0; count <= table_1.getRowCount(); count++)

如评论中所述,索引范围为[0,长度)。我怀疑问题在于您使用的是<=而不是<。它应该看起来像:

for(int count = 0; count < table_1.getRowCount(); count++)