经常出现这种异常,或许是事件分配线程的问题,可找不到原因,界面上点击树或表格是偶尔出现,谁能给些提示吗?Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 4 >= 4
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:632)
at javax.swing.JTable.getValueAt(JTable.java:2686)
at javax.swing.JTable.prepareRenderer(JTable.java:5703)
at org.jdesktop.swingx.JXTable.prepareRenderer(JXTable.java:3545)
at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:622)
at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:519)
at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:308)
at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:234)
at javax.swing.JComponent.paintComponent(JComponent.java:752)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JViewport.paint(JViewport.java:747)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at org.jdesktop.swingx.JXPanel.paint(JXPanel.java:489)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)异常java
工程太大了,没办法全贴出来,下面是几个相关的函数。
public void refreshData() {
getUndesignatedUser();
TreePath path = tree.getSelectionPath();
if (path == null)
return;
Object selObj = ((DefaultMutableTreeNode) path.getLastPathComponent())
.getUserObject();
if (!(selObj instanceof Department))
return;
getDesignatedUser(selectedDepartment);
} public void valueChanged(TreeSelectionEvent e) {
btnSubmit.setEnabled(false);
int rowCount = modelDesignatedUser.getRowCount();
for (int i = 0; i < rowCount; i++)
modelDesignatedUser.removeRow(0);
rowCount = modelUndesignatedUser.getRowCount();
for (int i = 0; i < rowCount; i++)
modelUndesignatedUser.removeRow(0);
selectedDepartment = null;
initButtonsState();
addedUsers.clear();
deletedIDs.clear();
getUndesignatedUser();
TreePath path = e.getNewLeadSelectionPath();
if (path != null) {
Department dept = (Department) ((DefaultMutableTreeNode) path
.getLastPathComponent()).getUserObject();
selectedDepartment = dept;
getDesignatedUser(selectedDepartment);
}
}public void getUndesignatedUser() { vRightTableData.clear();
for (int i = 0; i < SprojectOAMS.vUser.size(); i++) {
UserDepartment ud = SprojectOAMS.vUser.get(i);
if (ud.departmentID == 0) {
Vector<Object> vRow = new Vector<Object>();
vRow.add(ud);
vRow.add(ud.ID);
vRow.add(ud.departmentID);
vRow.add(ud.userID);
vRightTableData.add(vRow);
}
} SwingUtilities.invokeLater(new Runnable() {
public void run() {
modelUndesignatedUser.setDataVector(vRightTableData, vTitle);
for (int i = 0; i < tableUndesignatedUser.getColumnModel()
.getColumnCount(); i++) {
tableUndesignatedUser.getColumnModel().getColumn(i)
.setCellRenderer(renderer);
}
tableUndesignatedUser.packAll();
tableUndesignatedUser.updateUI();
}
});
}
你把异常信息帖全一点吧,我还没看到你的代码哪里抛出的