/ / Problemas al intentar leer un archivo y agregar sus valores a un JFrame - java, swt

Problemas al intentar leer un archivo y agregar sus valores a un JFrame - java, swt

Estoy recibiendo este error cuando intento agregar algunos valores de los archivos de archivos:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0

Este es mi código:

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

Solo estoy leyendo un archivo, luego estoy tratando de agregar cada línea del archivo a una tabla y colocarla en un JFrame.

Dentro del archivo está así:

ejemplo1 | ejemplo2 | ejemplo3

ejemplo1 | ejemplo2 | ejemplo3

ejemplo1 | ejemplo2 | ejemplo3

ejemplo1 | ejemplo2 | ejemplo3

ejemplo1 | ejemplo2 | ejemplo3

¿Qué estoy haciendo mal? Este error es confuso para mí.

Gracias por la ayuda.

ACTUALIZAR:

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

Respuestas

2 para la respuesta № 1
  1. Debe crear un DefaultTableModel antes de comenzar a leer sus datos (es decir, fuera del bucle while). El modelo solo contendrá los nombres de las columnas.
  2. Luego, para cada línea de datos que lea del archivo, cree un Vector y agregue cada token del tokenizer al Vector.
  3. Luego agregas el Vector al DefaultTableModel
  4. Cuando termina de procesar toda la línea de datos en el archivo, crea la JTable usando el DefaultTableModel.
  5. Usted agrega el JTable a un JScrollPane y agrega el scrollpane al marco.

Editar:

  1. Hay un constructor para especificar los nombres de las columnas (con un recuento de 0 filas).

  2. Debe crear un nuevo vector de fila para cada fila que agregue al modelo.

  3. No use el método clear () ya que eliminará los datos que acaba de agregar.

  4. No puede agregar la tabla al panel de desplazamiento. La tabla se agrega a la ventana gráfica del panel de desplazamiento. La forma más sencilla de hacerlo es crear el panel de desplazamiento. JScrollPane scrollPane = new JScrollPane(table);