Problemas com "for" em "jtable"

Boa tarde a todos…

Como faço para retornar todos valores de ArrayList em um Jtable… no exemplo abaixo, eu estou rodando todo ArrayList, porém ele ta jogando dentro do Jtable somente o ultimo registro do ArrayList.

[color=green] public static void tabela(ArrayList carregar)
{
Estrutura dados = new Estrutura();
JFrame f = new JFrame("JTable Sample");
Container content = f.getContentPane();

	for (int cont = 0; cont < carregar.size(); cont++)
	{

		dados = (Estrutura)carregar.get(cont); 


		String[] columns = { "nome", "R.A.", "Nt1", "Nt2", "Nt3", "Nt4", "Nt5", "Nt6" };

		Integer a=new Integer (dados.B_ra);
		Double b=new Double (dados.B_si);
		Double c=new Double (dados.B_pi);
		Double d=new Double (dados.B_at);
		Double e=new Double (dados.B_ac);
		Double g=new Double (dados.B_arq);
		Double h=new Double (dados.B_adm);

		Object rows[][] = {{dados.B_nome,a ,b,c,d,e,g,h}};
	
		JTable table = new JTable(rows,columns);
		JScrollPane scrollPane = new JScrollPane(table);
		content.add(scrollPane, BorderLayout.CENTER);
	}
		f.setSize(600, 200);
		f.setVisible(true);
	
}

[/color]
Agradeço a todos que puderem ajudar ou se interessar no problema descrito.

Da uma olhada nesse teu FOR que ele esta execultado toda tua atribuição e ta criando a JTable mais de uma vez por estar dentro do FOR então ele cria e quando passa novamente pelo laço ele cria outra vez e destroi o anterior e assim por diante. E por estar trazendo somente a ultima linha é porque
por exemplo Integer a=new Integer (dados.B_ra); ele cria cada vez que o laço repete então vai prevalecer os dados da ulitma vez que o laço foi execultado.

Vlw pela atenção…

To meio que apanhando para o jtble… Estou tentando fazer eh criar um jtable onde o mesmo receba valores de um Array List (“alunos.txt”) que contem (nome, cod, nota1,nota2…nota6)… Vc teria como eu poderia fazer de outra forma… tentei tirar do FOR como vc disse, mas naum deu certo…

Vc esta buscando estes dados onde? de um banco de dados? em uma classe que recebe os dados ?.. posta ae o codigo aonde esses dados são coletados.

O arquivo interface faz a chamada…

Brother coloca essa alteração no teu metodo TABELA, espero que funcione hehehehe…

public static void tabela(ArrayList carregar)
	{
		Estrutura dados = new Estrutura();
		JFrame f = new JFrame("JTable Sample");
		Container content = f.getContentPane();
		
		String[] columns = { "nome", "R.A.", "Nt1", "Nt2", "Nt3", "Nt4", "Nt5", "Nt6" };
		
		/**
		 * Foi passado o codigo que cria a JTable antes do laço
		 */
		Object[][] rowsTemp = new Object[][]{null};
		DefaultTableModel modelo = new DefaultTableModel(rowsTemp,columns);
		
		JTable table = new JTable(modelo);
				
		JScrollPane scrollPane = new JScrollPane(table);
		content.add(scrollPane, BorderLayout.CENTER);
		
		//Obtem o Iterator de carregar
		Iterator i = carregar.iterator();
		//Enquanto obtiver dados
		while(i.hasNext()){
				
		    //Recebendo o proximo registro      			
			dados = (Estrutura)i.next(); 
			
			Integer a=new Integer (dados.B_ra);
			Double b=new Double (dados.B_si);
			Double c=new Double (dados.B_pi);
			Double d=new Double (dados.B_at);
			Double e=new Double (dados.B_ac);
			Double g=new Double (dados.B_arq);
			Double h=new Double (dados.B_adm);
			
			

			Object rows[][] = {{dados.B_nome,a ,b,c,d,e,g,h}};
			//Adiciona nova linha
			modelo.addRow(rows);			
		
		}
		
		f.setSize(600, 200);
		f.setVisible(true);

	}

Malves_info , em primeiro lugar, muito obrigado pela atenção que vc esta dano a este algoritmo…

Esta ocorrendo um erro ao executar esta nova rotina, esta aparecendo na celula “[Ljava.lang.Object;@131303f” esta mensagem…

Estava interpretando sua rotina, e ve que vc usou o metodos de adicionar sempre uma linha no final… vou tentar refazer dessa forma…(claro estudar mais sobre ArrayList e Jtable)… veja so como ficou ao executar o mesmo…


Brother achei uma solução rápida aqui, espero que desta vez funcione.

public static void tabela(ArrayList carregar)
	{
		Estrutura dados = new Estrutura();
		JFrame f = new JFrame("JTable Sample");
		Container content = f.getContentPane();
		
		String[] columns = { "nome", "R.A.", "Nt1", "Nt2", "Nt3", "Nt4", "Nt5", "Nt6" };
		
		/**
		 * Foi passado o codigo que cria a JTable antes do laço
		 */
		Object[][] rowsTemp = new Object[][]{null};
		DefaultTableModel modelo = new DefaultTableModel(rowsTemp,columns);
		
		JTable table = new JTable(modelo);
				
		JScrollPane scrollPane = new JScrollPane(table);
		content.add(scrollPane, BorderLayout.CENTER);
		
		//Obtem o Iterator de carregar
		Iterator i = carregar.iterator();
		Object rows[] = new Object[columns.length];
		
		//Enquanto obtiver dados
		while(i.hasNext()){
			int index = 0;	
		    //Recebendo o proximo registro      			
			dados = (Estrutura)i.next(); 
			rows[0] = dados.B_nome;
			Integer a=new Integer (dados.B_ra);
			rows[1] = a;
			Double b=new Double (dados.B_si);
			rows[2] = b;
			Double c=new Double (dados.B_pi);
			rows[3] = c;
			Double d=new Double (dados.B_at);
			rows[4] = d;
			Double e=new Double (dados.B_ac);
			rows[5] = e;
			Double g=new Double (dados.B_arq);
			rows[6] = g;
			Double h=new Double (dados.B_adm);
			rows[7] = h;
			
			//Adiciona nova linha
			modelo.addRow(rows);			
		
		}
		
		f.setSize(600, 200);
		f.setVisible(true);

	}

Acho que vc pode tbm mudar essa passagem de valor direto ao inves por exemplo de ser:
Double h=new Double (dados.B_adm); poderia ser rows[7] = dados.B_adm;

Muito obrigado pela ajuda… funcionou perfeitamente…

Blza Então… :slight_smile:

Eu to tentando usar uma tabela de maneira parecida.
Na verdade ja está funcionando; a bronca é que ele deixa o usuario editar as informações contidas nas celulas.
Voces sabem como desabilitar a opção de edição??

Usa isso:

suaJtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);