AWT-EventQueue-0“;java.lang.ArrayIndexOutOfBoundsException:JTable的0错误
我试图从我的SQL数据库中选择日期并将其放入JTable,但我一直收到一个错误: “AWT-EventQueue-0”java.lang.ArrayIndexOutofBounds异常:0” 不太清楚原因。这是我的代码:AWT-EventQueue-0“;java.lang.ArrayIndexOutOfBoundsException:JTable的0错误,java,swing,jtable,indexoutofboundsexception,Java,Swing,Jtable,Indexoutofboundsexception,我试图从我的SQL数据库中选择日期并将其放入JTable,但我一直收到一个错误: “AWT-EventQueue-0”java.lang.ArrayIndexOutofBounds异常:0” 不太清楚原因。这是我的代码: table = new JTable(); try { Connection MyConn = null; Statement statement = null; ResultSet rs = null; Class.forName("com
table = new JTable();
try {
Connection MyConn = null;
Statement statement = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
MyConn = DriverManager.getConnection("jdbc:mysql:"
+ "//localhost/eventbooking", "root", "Passw0rd");
statement = MyConn.createStatement();
rs = statement.executeQuery("SELECT * FROM `events` WHERE `Date Of Event` = '30/03/2014'");
int i=0;
while (rs.next()) {
Object a = rs.getString("Date Of Event");
Object b = rs.getString("Tickets Available");
Object c = rs.getString("Price Of Event");
Object d = rs.getString("Start Time");
table.setRowSorter(null);
table.getModel().setValueAt(a, i, 0 );
table.getModel().setValueAt(b, i, 1);
table.getModel().setValueAt(c, i, 2);
table.getModel().setValueAt(d, i, 3);
EventDiary.this.add(table);
System.out.println(i);
i++;
}
问题是您正在创建一个默认的JTable,它有一个TableModel,由一个向量组成,其中没有任何元素。然后您尝试将该元素设置在该向量的索引0处,该索引此时不存在。瞧,您面临一个问题 例如:
JTable table = new JTable();
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
例如,以下各项:
JTable table = new JTable(1, 1);
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
javax.swing.JTable[,0,0,0x0,无效,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE__后续_列,cellSelectionEnabled=false,editingColumn=-1,gridColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,RowSelectionLowed=true,selectionBackground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=44,g=93,b=205],selectionForeground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255],showHorizontalLines=true,showVerticalLines=true]
因此,如果你想坚持你的做事方式,你应该事先添加行和列
另一种方法是:
JTable table = new JTable();
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addColumn("id");
model.addColumn("name");
Object[] row = new Object[2];
row[0] = 1;
row[1] = "John";
model.addRow(row);
row = new Object[2];
row[0] = 2;
row[1] = "Jack";
model.addRow(row);
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
System.out.println("column: " + model.getColumnName(j) + ", row #" + i + ", value: " + model.getValueAt(i, j));
}
}
问题是您正在创建一个默认的JTable,它有一个TableModel,由一个向量组成,其中没有任何元素。然后您尝试将该元素设置在该向量的索引0处,该索引此时不存在。瞧,您面临一个问题 例如:
JTable table = new JTable();
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
例如,以下各项:
JTable table = new JTable(1, 1);
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
javax.swing.JTable[,0,0,0x0,无效,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE__后续_列,cellSelectionEnabled=false,editingColumn=-1,gridColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,RowSelectionLowed=true,selectionBackground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=44,g=93,b=205],selectionForeground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255],showHorizontalLines=true,showVerticalLines=true]
因此,如果你想坚持你的做事方式,你应该事先添加行和列
另一种方法是:
JTable table = new JTable();
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addColumn("id");
model.addColumn("name");
Object[] row = new Object[2];
row[0] = 1;
row[1] = "John";
model.addRow(row);
row = new Object[2];
row[0] = 2;
row[1] = "Jack";
model.addRow(row);
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
System.out.println("column: " + model.getColumnName(j) + ", row #" + i + ", value: " + model.getValueAt(i, j));
}
}
问题是您正在创建一个默认的JTable,它有一个TableModel,由一个向量组成,其中没有任何元素。然后您尝试将该元素设置在该向量的索引0处,该索引此时不存在。瞧,您面临一个问题 例如:
JTable table = new JTable();
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
例如,以下各项:
JTable table = new JTable(1, 1);
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
javax.swing.JTable[,0,0,0x0,无效,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE__后续_列,cellSelectionEnabled=false,editingColumn=-1,gridColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,RowSelectionLowed=true,selectionBackground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=44,g=93,b=205],selectionForeground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255],showHorizontalLines=true,showVerticalLines=true]
因此,如果你想坚持你的做事方式,你应该事先添加行和列
另一种方法是:
JTable table = new JTable();
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addColumn("id");
model.addColumn("name");
Object[] row = new Object[2];
row[0] = 1;
row[1] = "John";
model.addRow(row);
row = new Object[2];
row[0] = 2;
row[1] = "Jack";
model.addRow(row);
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
System.out.println("column: " + model.getColumnName(j) + ", row #" + i + ", value: " + model.getValueAt(i, j));
}
}
问题是您正在创建一个默认的JTable,它有一个TableModel,由一个向量组成,其中没有任何元素。然后您尝试将该元素设置在该向量的索引0处,该索引此时不存在。瞧,您面临一个问题 例如:
JTable table = new JTable();
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
例如,以下各项:
JTable table = new JTable(1, 1);
table.getModel().setValueAt("i", 0, 0);
System.out.println(table);
结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at com.stackoverflow.answer.JTableTest.main(JTableTest.java:9)
javax.swing.JTable[,0,0,0x0,无效,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE__后续_列,cellSelectionEnabled=false,editingColumn=-1,gridColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,RowSelectionLowed=true,selectionBackground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=44,g=93,b=205],selectionForeground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255],showHorizontalLines=true,showVerticalLines=true]
因此,如果你想坚持你的做事方式,你应该事先添加行和列
另一种方法是:
JTable table = new JTable();
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addColumn("id");
model.addColumn("name");
Object[] row = new Object[2];
row[0] = 1;
row[1] = "John";
model.addRow(row);
row = new Object[2];
row[0] = 2;
row[1] = "Jack";
model.addRow(row);
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
System.out.println("column: " + model.getColumnName(j) + ", row #" + i + ", value: " + model.getValueAt(i, j));
}
}
此表单中的问题根本不可回答,代码中没有任何内容可与您的描述进行比较question@mKorbel:恰恰相反,它只包含足够的细节。;)此表单中的问题根本无法回答,代码中没有任何内容可与您的描述进行比较question@mKorbel:恰恰相反,它包含ju这张表格中的问题根本无法回答,代码中没有任何内容可以与您的描述进行比较question@mKorbel:恰恰相反,它只包含足够的细节。;)此表单中的问题根本无法回答,代码中没有任何内容可与您的描述进行比较question@mKorbel:完全是骗局trary,它只包含了足够的细节。;)我将代码更改为太JTable table=new JTable(1,1);但现在我在下一行中得到另一个错误,即“java.lang.ArrayIndexOutOfBoundsException:1>=1”,为了清晰起见,编辑了答案。我将代码更改为太JTable table=new JTable(1,1);但是