尝试从文件存档添加一些值时出现此错误:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
这是我的代码:
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while (br.ready()) {
line = br.readLine();
st = new StringTokenizer(line, "|");
JTable table = new JTable();
table.setModel(new DefaultTableModel(new Object[0][], new String[] { "TEST", "TEST2","TEST3"}));
chargeTable = (DefaultTableModel)table.getModel();
while (st.hasMoreElements()) {
rowData.add(st.nextElement());
}
if (!rowData.isEmpty()) {
tabelaCarregada.addRow(rowData);
rowData.clear();
}
}
br.close();
fr.close();
JFrame jd;
jd = new Tabela(chargeTable);
jd.pack();
jd.setVisible(true);
我只是在阅读一个文件,然后我正在尝试将文件中的每一行添加到一个表中并将其放在JFrame中。
文件内部是这样的:
示例1 |示例2 |示例3
示例1 |示例2 |示例3
示例1 |示例2 |示例3
示例1 |示例2 |示例3
示例1 |示例2 |示例3
我做错了什么?这个错误让我感到困惑。
感谢您的帮助。
更新:
FileReader fr = new FileReader(arq);
BufferedReader br = new BufferedReader(fr);
String line;
StringTokenizer st;
Vector<Object> rowData = new Vector<Object>();
chargeTable = new DefaultTableModel(new Object[0][], new String[] {"Teste1", "Teste2"});
while (br.ready()) {
line = br.readLine();
st = new StringTokenizer(line, "|");
while (st.hasMoreElements()) {
rowData.add(st.nextElement());
}
if (!rowData.isEmpty()) {
chargeTable.addRow(rowData);
rowData.clear();
}
}
JTable table = new JTable();
table.setModel(chargeTable);
br.close();
fr.close();
JScrollPane sp = new JScrollPane();
sp.add(table);
JFrame jd = new JFrame();
jd.add(sp);
jd.pack();
jd.setVisible(true);
答案 0 :(得分:2)
编辑:
有一个构造函数只用于指定列名(行数为0)。
您需要为添加到模型的每一行创建一个新行Vector。
不要使用clear()方法,因为这样会删除刚刚添加的数据。
您无法将表格添加到滚动窗格。您将表添加到滚动窗格的视口。最简单的方法是在创建滚动窗格时。 JScrollPane scrollPane = new JScrollPane(table);