/ / Проблеми при опит за четене на файл и добавяне на неговите стойности към JFrame - java, swt

Проблеми при опит за четене на файл и добавяне на стойности към JFrame - java, swt

Получавам тази грешка, когато се опитвам да добавя някои стойности от архивите на файлове:

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.

Вътре във файла е така:

example1 | example2 | ПРИМЕР 3

example1 | example2 | ПРИМЕР 3

example1 | example2 | ПРИМЕР 3

example1 | example2 | ПРИМЕР 3

example1 | example2 | ПРИМЕР 3

Това, което правя погрешно? Тази грешка ме обърква.

Благодаря за помощта.

UPDATE:

    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);

Отговори:

2 за отговор № 1
  1. Трябва да създадете DefaultTableModel, преди да започнете да четете данните си (т.е. извън цикъла while). Моделът ще съдържа само имената на колоните.
  2. След това за всеки ред данни, който четете от файла, създавате вектор и добавяте всеки токен от токенатора към вектор.
  3. След това добавяте Vector към DefaultTableModel
  4. Когато приключите с обработката на всички данни във файла, създавате JTable използвайки DefaultTableModel.
  5. Добавяте JTable към JScrollPane и добавяте скрола на рамката.

Редактиране:

  1. Съществува конструктор, който просто посочва имената на колоните (с 0 ред).

  2. Трябва да създадете нов вектор на ред за всеки ред, който добавите към модела.

  3. Не използвайте метода clear (), тъй като това ще премахне току-що добавените данни.

  4. Не можете да добавите таблицата към скролпана. Добавяте таблицата към екрана на екрана за скролване. Най-лесният начин да направите това е, когато създавате Scrollpane. JScrollPane scrollPane = new JScrollPane(table);