问题补充:
异常如下
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
at java.util.Vector.elementAt(Unknown Source)
at showInhaInformation$1.getValueAt(showInhaInformation.java:50)//异常位置为return ((Vector)vector.elementAt(row)).elementAt(column);
at showInhaInformation$1.getColumnClass(showInhaInformation.java:88)//异常位置为return getValueAt(0,c).getClass();
at javax.swing.JTable.getColumnClass(Unknown Source)
at javax.swing.JTable.getCellRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at javax.swing.JOptionPane.showOptionDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at showInhaInformation.actionPerformed(showInhaInformation.java:200)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
异常如下
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
at java.util.Vector.elementAt(Unknown Source)
at showInhaInformation$1.getValueAt(showInhaInformation.java:50)//异常位置为return ((Vector)vector.elementAt(row)).elementAt(column);
at showInhaInformation$1.getColumnClass(showInhaInformation.java:88)//异常位置为return getValueAt(0,c).getClass();
at javax.swing.JTable.getColumnClass(Unknown Source)
at javax.swing.JTable.getCellRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at javax.swing.JOptionPane.showOptionDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at showInhaInformation.actionPerformed(showInhaInformation.java:200)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
这一行数组越界
vector.size()<(row+1)或者((Vector) vector.elementAt(row)).size()<(column+1)
{ if(vector==null)
{
JOptionPane.showMessageDialog(null, "vector值为空");
}
if(tm==null)
{
JOptionPane.showMessageDialog(null, "tm值为空");
}
tm.fireTableStructureChanged();//更新表格内容 rec_vector =new Vector();//对象实例化
vector=new Vector();//从结果集中取数据放入向量vector中
rec_vector.addElement(rs.getString("NO"));
rec_vector.addElement(rs.getString("NAME"));
rec_vector.addElement(rs.getString("PASSWORD"));
rec_vector.addElement(rs.getString("SEX"));
rec_vector.addElement(rs.getString("ADDRESS"));
rec_vector.addElement(rs.getString("COUNT"));
rec_vector.addElement(rs.getString("TELPHONE"));
rec_vector.addElement(rs.getString("IC"));
vector.addElement(vector); //向量vector加入到vect }
vector=new Vector();//从结果集中取数据放入向量vector中 这个的实例化应放在While循环应放在外面.
如果放在里面.那里的的元素只可能是一个.
vector=newVector();//从结果集中取数据放入向量vector中
放在while()循环后还是不行啊
不过既不报错
也没有抛出异常
vector.removeAllElements();//初始化向量对象
//这一行放到循环外边试试
vector=new Vector();//从结果集中取数据放入向量vector中 while(rs.next())
{ if(vector==null)
{
JOptionPane.showMessageDialog(null, "vector值为空");
}
if(tm==null)
{
JOptionPane.showMessageDialog(null, "tm值为空");
}
tm.fireTableStructureChanged();//更新表格内容 rec_vector =new Vector();//对象实例化
//vector=new Vector();//从结果集中取数据放入向量vector中
rec_vector.addElement(rs.getString("NO"));
rec_vector.addElement(rs.getString("NAME"));
rec_vector.addElement(rs.getString("PASSWORD"));
rec_vector.addElement(rs.getString("SEX"));
rec_vector.addElement(rs.getString("ADDRESS"));
rec_vector.addElement(rs.getString("COUNT"));
rec_vector.addElement(rs.getString("TELPHONE"));
rec_vector.addElement(rs.getString("IC"));
vector.addElement(vector); //向量vector加入到vect }
还是一样的错误
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 4 >= 4 (数据库中有4条记录)
at java.util.Vector.elementAt(Unknown Source)
at ShowInhaInformation$1.getValueAt(ShowInhaInformation.java:54)
at ShowInhaInformation$1.getColumnClass(ShowInhaInformation.java:98)
at javax.swing.JTable.getColumnClass(Unknown Source)
at javax.swing.JTable.getCellRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
想快点把分给各位啊
谢谢帮助
public Object getValueAt(int row,int column)
{ /* 返回 row 和 column 处单元格的属性值 */
// return data[row][col];
if(!vector.isEmpty())
{
return ((Vector)vector.elementAt(row)).elementAt(column);
return ((Vector)vector.elementAt(row-1)).elementAt(column);
}
else
{
return null;
}
}
原因:
因为这里的row是结果集中的行号,是从1开始的。
红色的行删除,保留下面一行。
那些setValueAt()与getValueAt()就不用自己写了.
如果想用AbstractTableModel,可以去参考下JDK的DefaultTableModel.
你的setValueAt()方法变更的是data的值,而不是去变更vector的值.
但是取值又是用的vector.
方法 public void actionPerformed(ActionEvent event) 中,
try部分替换为下面的代码即可:
...... try
{
Connection con = DriverManager.getConnection("jdbc:odbc:bws81");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select * from inhaInformation");
vector.removeAllElements();
rec_vector = new Vector();
vector = new Vector();
while (rs.next())
{ if (vector == null)
{
JOptionPane.showMessageDialog(null, "vector is empty!");
} if (tm == null)
{
JOptionPane.showMessageDialog(null, "tm is null!");
}
tm.fireTableStructureChanged();
// rec_vector = new Vector();
rec_vector.addElement(rs.getString("NO"));// vector = new Vector();
rec_vector.addElement(rs.getString("NAME"));
rec_vector.addElement(rs.getString("PASSWORD"));
rec_vector.addElement(rs.getString("SEX"));
rec_vector.addElement(rs.getString("ADDRESS"));
rec_vector.addElement(rs.getString("COUNT"));
rec_vector.addElement(rs.getString("TELPHONE"));
rec_vector.addElement(rs.getString("IC"));
//
vector.addElement(rec_vector);
}
tm.fireTableStructureChanged();
stmt.close();
con.close();
JOptionPane.showMessageDialog(null, "Execute here!");
}......
......try
{
Connection con = DriverManager.getConnection("jdbc:odbc:bws81");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select * from inhaInformation");
vector.removeAllElements();
vector = new Vector();
while (rs.next())
{if (vector == null)
{
JOptionPane.showMessageDialog(null, "vector is empty!");
}if (tm == null)
{
JOptionPane.showMessageDialog(null, "tm is null!");
}
tm.fireTableStructureChanged(); rec_vector = new Vector();
// vector = new Vector();rec_vector.addElement(rs.getString("NO"));
rec_vector.addElement(rs.getString("NAME"));
rec_vector.addElement(rs.getString("PASSWORD"));
rec_vector.addElement(rs.getString("SEX"));
rec_vector.addElement(rs.getString("ADDRESS"));
rec_vector.addElement(rs.getString("COUNT"));
rec_vector.addElement(rs.getString("TELPHONE"));
rec_vector.addElement(rs.getString("IC"));
//
vector.addElement(rec_vector);
}
tm.fireTableStructureChanged();
stmt.close();
con.close();
JOptionPane.showMessageDialog(null, "Execute here!");
}......
应该是下面的:
......try
{
Connection con = DriverManager.getConnection("jdbc:odbc:bws81");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select * from inhaInformation");
vector.removeAllElements();
vector = new Vector();
while (rs.next())
{if (vector == null)
{
JOptionPane.showMessageDialog(null, "vector is empty!");
}if (tm == null)
{
JOptionPane.showMessageDialog(null, "tm is null!");
}
tm.fireTableStructureChanged(); rec_vector = new Vector();
// vector = new Vector();rec_vector.addElement(rs.getString("NO"));
rec_vector.addElement(rs.getString("NAME"));
rec_vector.addElement(rs.getString("PASSWORD"));
rec_vector.addElement(rs.getString("SEX"));
rec_vector.addElement(rs.getString("ADDRESS"));
rec_vector.addElement(rs.getString("COUNT"));
rec_vector.addElement(rs.getString("TELPHONE"));
rec_vector.addElement(rs.getString("IC"));
//
vector.addElement(rec_vector);
}
tm.fireTableStructureChanged();
stmt.close();
con.close();
JOptionPane.showMessageDialog(null, "Execute here!");
}......不好意思,事情有点多。这是最后修改结果。