ArrayIndexOutOfBoundsException = 0
ArrayIndexOutOfBoundsException = 0
Got DBTableHeaderFill Error: ArrayIndexOutOfBoundsException = 0
想不通,为什么会出现...
col 是 11 因为 table 有 12 headers,我们知道计数从 0
开始
我知道它看起来很原始,但我只是在调试问题...
JOptionPane 用于查看哪些有效,哪些无效,我不知道数组有什么问题...
Object rows[][] = new Object[row][col];
Object columns [] = new Object[col];
row = 1;
col = 11;
JTable table = new JTable(rows, columns);
scrollPane.setViewportView(table);
/*
* DataBase Headers
*/
try{
conn = DBConnection.DBConnector();
JOptionPane.showMessageDialog(null, "Connection");
Statement st = conn.createStatement();
JOptionPane.showMessageDialog(null, "Statement");
rs = st.executeQuery("SELECT * FROM Query1");
JOptionPane.showMessageDialog(null, "Query1 load");
ResultSetMetaData rsmd = rs.getMetaData();
JOptionPane.showMessageDialog(null, rsmd);
int columnCount = rsmd.getColumnCount();
JOptionPane.showMessageDialog(null, columnCount);
JOptionPane.showMessageDialog(null, "test " + col);
// The column count starts from 0
for (int i = 1; i < columnCount + 1; i++ ) {
columns[i-1] = rsmd.getColumnName(i);
JOptionPane.showMessageDialog(null, "result: " + o);
JOptionPane.showMessageDialog(null, "Header" + columns[i-1]);
// Writes headers
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "DBTableHeaderFill Error: " + e);
}
当我在数组之前分配 col 和 row 值时,出现以下错误:
java.lang.NullPointerException at
javax.swing.JTable.getColumnName(Unknown Source) at
javax.swing.JTable.addColumn(Unknown Source) at
javax.swing.JTable.createDefaultColumnsFromModel(Unknown Source) at
javax.swing.JTable.tableChanged(Unknown Source) at
javax.swing.JTable.setModel(Unknown Source) at
javax.swing.JTable.(Unknown Source) at
javax.swing.JTable.(Unknown Source) at
javax.swing.JTable.(Unknown Source) at
Main.initialize(Main.java:199) at Main.(Main.java:65) at
Main.run(Main.java:34) at
java.awt.event.InvocationEvent.dispatch(Unknown Source) at
java.awt.EventQueue.dispatchEventImpl(Unknown Source) at
java.awt.EventQueue.access0(Unknown Source) at
java.awt.EventQueue.run(Unknown Source) at
java.awt.EventQueue.run(Unknown Source) at
java.security.AccessController.doPrivileged(Native Method) at
java.security.ProtectionDomain.doIntersectionPrivilege(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)
所以我发现了我的问题...
JTable table = new JTable(rows, columns);
scrollPane.setViewportView(table);
这需要在数组的末尾....
变量col设置在:
之后
Object columns [] = new Object[col];
这一行之前的 col 值是多少?
如果它是 0,那么这将解释你得到的错误:
Got DBTableHeaderFill Error: ArrayIndexOutOfBoundsException = 0
您似乎在使用 row/col 值创建数组后初始化它们:
Object rows[][] = new Object[row][col];
Object columns [] = new Object[col];
row = 1;
col = 11;
这应该是:
row = 1;
col = 11;
Object rows[][] = new Object[row][col];
Object columns [] = new Object[col];
并且 col 应该是您的 table 具有的确切列数,否则您将创建一个只有 11 个元素长的数组,而不是 12 个元素。
Got DBTableHeaderFill Error: ArrayIndexOutOfBoundsException = 0
想不通,为什么会出现...
col 是 11 因为 table 有 12 headers,我们知道计数从 0
开始我知道它看起来很原始,但我只是在调试问题... JOptionPane 用于查看哪些有效,哪些无效,我不知道数组有什么问题...
Object rows[][] = new Object[row][col];
Object columns [] = new Object[col];
row = 1;
col = 11;
JTable table = new JTable(rows, columns);
scrollPane.setViewportView(table);
/*
* DataBase Headers
*/
try{
conn = DBConnection.DBConnector();
JOptionPane.showMessageDialog(null, "Connection");
Statement st = conn.createStatement();
JOptionPane.showMessageDialog(null, "Statement");
rs = st.executeQuery("SELECT * FROM Query1");
JOptionPane.showMessageDialog(null, "Query1 load");
ResultSetMetaData rsmd = rs.getMetaData();
JOptionPane.showMessageDialog(null, rsmd);
int columnCount = rsmd.getColumnCount();
JOptionPane.showMessageDialog(null, columnCount);
JOptionPane.showMessageDialog(null, "test " + col);
// The column count starts from 0
for (int i = 1; i < columnCount + 1; i++ ) {
columns[i-1] = rsmd.getColumnName(i);
JOptionPane.showMessageDialog(null, "result: " + o);
JOptionPane.showMessageDialog(null, "Header" + columns[i-1]);
// Writes headers
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "DBTableHeaderFill Error: " + e);
}
当我在数组之前分配 col 和 row 值时,出现以下错误:
java.lang.NullPointerException at javax.swing.JTable.getColumnName(Unknown Source) at javax.swing.JTable.addColumn(Unknown Source) at javax.swing.JTable.createDefaultColumnsFromModel(Unknown Source) at javax.swing.JTable.tableChanged(Unknown Source) at javax.swing.JTable.setModel(Unknown Source) at javax.swing.JTable.(Unknown Source) at javax.swing.JTable.(Unknown Source) at javax.swing.JTable.(Unknown Source) at Main.initialize(Main.java:199) at Main.(Main.java:65) at Main.run(Main.java:34) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access0(Unknown Source) at java.awt.EventQueue.run(Unknown Source) at java.awt.EventQueue.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain.doIntersectionPrivilege(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)
所以我发现了我的问题...
JTable table = new JTable(rows, columns);
scrollPane.setViewportView(table);
这需要在数组的末尾....
变量col设置在:
之后Object columns [] = new Object[col];
这一行之前的 col 值是多少? 如果它是 0,那么这将解释你得到的错误:
Got DBTableHeaderFill Error: ArrayIndexOutOfBoundsException = 0
您似乎在使用 row/col 值创建数组后初始化它们:
Object rows[][] = new Object[row][col];
Object columns [] = new Object[col];
row = 1;
col = 11;
这应该是:
row = 1;
col = 11;
Object rows[][] = new Object[row][col];
Object columns [] = new Object[col];
并且 col 应该是您的 table 具有的确切列数,否则您将创建一个只有 11 个元素长的数组,而不是 12 个元素。