我之前已经知道类似的问题了,而且我已经浏览了几乎所有这些问题,但我仍然无法通过从文件加载数据来填充我的JTable(来自.txt文件) )。
我保存文件的方式是每个列的信息用" |"分隔。所以你明白了:
名字|姓| ID | LandPhone |手机|
例如,你得到这个: 李四|约翰| 1248234834 | 021324234234 | 0732553535 | DOE |简| 1492349324 | 021432434325 | 0735345345 |
等等。我用来打开.txt文件的代码是:
private void deschideMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser jfc = new JFileChooser();
String line = null;
DefaultTableModel dtm = (DefaultTableModel) table.getModel();
FileFilter filter = new FileNameExtensionFilter("Fisiere text","txt");
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
jfc.setMultiSelectionEnabled(false);
jfc.setDialogTitle("Deschideti un tabel...");
jfc.setFileFilter(filter);
if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){
File file = jfc.getSelectedFile();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null) {
Vector data= new Vector();
StringTokenizer st1 = new StringTokenizer(line,"|");
while (st1.hasMoreTokens()) {
String nextToken = st1.nextToken();
data.add(nextToken);
}
System.out.println(data);
dtm.addRow(data);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
问题是,我总是收到此错误:
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:474)
at javax.swing.table.DefaultTableModel.justifyRows(DefaultTableModel.java:265)
at javax.swing.table.DefaultTableModel.insertRow(DefaultTableModel.java:375)
at javax.swing.table.DefaultTableModel.addRow(DefaultTableModel.java:350)
如果我使用打印方法查看我得到的内容,我总是先找到第一行,然后崩溃。它永远不会到达第二行。你怎么强迫它去第二行?什么是0> = 0异常?根据我从与.txt文件中填充JTable相关的其他主题的理解,它与不了解列数的模型有关吗?
这令人非常困惑。我一直想知道为什么它必须在编程,一切和任何事情上如此复杂,但这只是一个修辞问题。