Lógica e arrays

To com um problema aqui, tenho uma classe que cria e insere nomes num arquivo de texto que está funcionando perfeitamente. Em outra classe deveria cria uma tabela e mostrar todos os nomes e telefones nessa tabela.

Entretanto essa tabela só está mostrando a útima linha da tabela.

ShowAgendaPanel.java

package ui;

import java.awt.Dimension;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

/**
 * Essa classe implementa o painel com a tabela mostrando os nomes e outros dados.
 * 
 * @author Rodrigo
 * @version 1.0, August 2008
 */
public class ShowAgendaPanel extends JPanel
{
	private JScrollPane scrollTable;
	private JTable table;

	// cria o painel da tabela
	private JPanel panel = new JPanel();
	public ShowAgendaPanel()
	{
		panel.setPreferredSize(new Dimension(750, 450));

		String linha;
		BufferedReader br;
		File agenda;
		
		String[] array;

		agenda = new File("agenda.txt");

		try{
			br = new BufferedReader(new FileReader(agenda));

			while(((linha = br.readLine()) != null))
			{
				array = new String[7];
				
				array[0] = linha.substring(linha.indexOf("-name-"),
						linha.indexOf("-secondname-"));
				array[1] = linha.substring(
						linha.indexOf("-secondname-"),
						linha.indexOf("-nickname-"));
				array[2] = linha.substring(linha.indexOf("-nickname-"),
						linha.indexOf("-group-"));
				array[3] = linha.substring(linha.indexOf("-group-"),
						linha.indexOf("email"));
				array[4] = linha.substring(linha.indexOf("-email-"),
						linha.indexOf("-fone-"));
				array[5] = linha.substring(linha.indexOf("-fone-"),
						linha.indexOf("-addres-"));
				array[6] = linha.substring(linha.indexOf("-addres-"),
						linha.indexOf(";"));

				String[] columNames = {"Nome", "Sobrenome", "Apelido",
						"Grupo", "Email", "Fone", "Endereço"};

				// itens inseridos nas colunas
				Object[][] data = {
						{array[0], array[1], array[2], array[3],
							array[4], array[5], array[6]}
				};
				
				table = new JTable(data, columNames);

                               // Nesse for estão aparecendo todos os dados que eu desejo
				for(int i = 0; i <= 6; i++)
				{
					System.out.println(array[i]);
				}
			}
		}
		catch(FileNotFoundException e)
		{
			e.printStackTrace();
			JOptionPane.showMessageDialog(null,
					"Não foi adicionado nenhum nome",
					"Erro", JOptionPane.ERROR_MESSAGE);
		}
		catch(IOException ex)
		{
			ex.printStackTrace();
			JOptionPane.showMessageDialog(null,
					"Erro de entrada e saida", "Erro",
					JOptionPane.ERROR_MESSAGE);
		}
		table.setPreferredScrollableViewportSize(new Dimension(750, 440));
		table.setFillsViewportHeight(false);
		table.setEnabled(false); // desabilita a edicao da tabela com os dados

//		cria o scrol e adiciona a tabela
		scrollTable = new JScrollPane(table);

//		adiciona o scroll ao painel
		panel.add(scrollTable);
		this.add(new JScrollPane(panel));
	}
}

Se algué já fez algo parecido ou sabe como resolver, eu agradeceria bastante.