Editando meu proprio defaulttablemodel

41 respostas
P

ola,
alguem pode me ajudar?como faço para controlar o lugar onde a coluna vai ser criada na jtable?
por exemplo estou criando novas colunas na minha jtable conforme o resultado de uma pesquisa do banco mas o problema e que não estou conseguindo reacionar os itens criados com os ja existentes na jtable dai fica uma tabela grande e desordenada o metodo que estou usando para criar novas colunas é o seuinte [for(int i=0;i<v.length;i++) if(v[i][0] != null) { cold[i]=v[i][0]; } String col="nota"; modelo.addColumn(col,cold);
so q eu qria q as linhas dele ficassem na mesma linha q os itens das outras colunas mas eles ficam embaixo fica mais ou menos assim
nome|nota
laura|
maisa|
|63//nota d laura
|45//nota da maisa

como posso arrumar isto?
obg

41 Respostas

visola

Você já chegou a debugar isso?
Porque pelo que me parece é que o seu vetor cold está vazio. Por isso ele está criando a coluna vazia.

O seu primeiro vetor deve esta com todos os dados. Coloca um println dentro deste if para ver o valor de cold[i]:

System.out.println(cold[i]);
Marky.Vasconcelos

Voce deve definir suas colunas no TableModel.

Veja na minha assinatura como fazer isso.

P
Visola coloquei o system e ficou assim no console
select distinct disciplina,modulo from nota where rc_aluno='5'







3.0
3.0
3.0
3.0
3.0
e minha tabela fica assim como no print
visola

paty… não tenho idéia o que está acontecendo.
Vamos precisar de mais código e uma explicação mais detalhada para entender o que está acontecendo.

Marky.Vasconcelos

O que acontece é que voce está usando addColumn para criar uma coluna para cada nota, quando na verdade voce devia primeiro definir como vai ser o modelo, depois preencher os dados nos respectivos lugares.

Para aprender isso que te indiquei estudar sobre como funciona o TableModel.

P

ah tah é q estou aprendendo ainda sobre isto :oops: vou ler os links de sua assinatura d novo qualquer coisa eu posto=]

P

meninos voces tem razão sobre o defaulttablemodel
então estou criando o meu proprio e tipo eu vi q vai ser bem melhor pq vou poder usa-lo nas outras jtables
estou implementando meu proprio defaulttablemodel na hora em q uso na aplicacao so aparece as colunas as linhas nao! segue em anexo minha classe da defaul fiz conforme modelo dos colegas
:lol: bg pela ajuda

P
estou usando meu default table model criei a partirde exmplos tirados de topicos aqui do guj a minha tabela esta do jeito q eu realmente queria mas agora estou com um problema no preenchimento das linhas tipo eu cnsigo preencher uma ou varias linhas iguais! :oops: tipo na classe em q qro usar a minha jtable eu crio um objeto da classe q uso na default mas por ter q usar os metodos set e o resultado do banco vir em um array acaba q ele so troca pelo ultimo resultado da pesquisa!como arrumar isto?estou fazendo assim segue minhas classes em anexo mas o metodo onde estou tentando usar a tabela é o seguinte
Aluno1TableModel model;
	private void geraTabela3()
	{
		try
		{
			String k[]=new String[12];int q=0;String k1[]=new String[12];int y=0;
			String x[]=new String[k.length]; int y1=0;String x1[]=new String[x.length]; int y2=0;
			Aluno1 socio=new Aluno1();
			model=new Aluno1TableModel();


			resultado = comando.executeQuery("select nome from aluno where Id='"+ t0.getText() +"'");
			while(resultado.next())
			{
				socio.setNome(resultado.getString(1));
				System.out.println(resultado.getString(1));
				model.addAluno(socio);
			}

			resultado = comando.executeQuery("select distinct disciplina,modulo from nota where rc_aluno='"+ t0.getText() +"'");
			while(resultado.next())
			{
				for(int i=0;i<k.length;i++)
				{
					k[i]=resultado.getString(1);
					k1[i]=resultado.getString(2);
					System.out.println("k[q] "+resultado.getString(1)+" k1[q] "+resultado.getString(2));
					
						socio.setTelefone(k[i]);
						model.addAluno(socio);
					
						socio.setModulo(k1[i]);
						model.addAluno(socio);
					
				}
			}


			for(int i=0;i<x.length;i++)
			{	if(k[i]!=null)
			{
				resultado = comando.executeQuery("select atividade,nota from nota where rc_aluno='"+ t0.getText() +"'and disciplina='"+ k[i] +"' and modulo='"+k1[i] +"'");
				while(resultado.next())
				{
					x[i]=resultado.getString(1);
					x1[i]=resultado.getString(2);
					if(x[i]!=null)
					{
						socio.setAtividade(x[i]);
					model.addAluno(socio);
					}
					if(x1[i]!=null)
					{
						socio.setMensalidade(x1[i]);
					model.addAluno(socio);
					}
					System.out.println("atv "+x[i]+" nota "+x1[i]);

				}
			}
			}

			table = new JTable(model);
			JScrollPane scroller = new JScrollPane(table);
			scroller.setVisible(true);
			scroller.setBounds(20, 270, 700, 150);
			painel.add(scroller, null);
			//fazer com que todos os itens do array de disciplina seja add na jtable

		}
		catch (SQLException erro) {
			erro.printStackTrace();
		}
	}
obg pela ajuda
visola

Você tá criando o objeto socio, do tipo Aluno fora de todos os loops. Esse objeto é referência para os dados que estão na memória. Quando você passa ele no addAluno do seu model, por exemplo, está criando uma nova referência para os mesmos dados na memória. Até o primeiro loop isso está ok porque ele vai ter os dados que você quer. Na segunda vez que o loop rodar, você vai alterar o mesmo objeto na memória para um novo valor e adicioná-lo mais uma vez (criando mais um apontamento para o mesmo objeto).

Você precisa criar um novo Aluno toda vez que passar por um loop e chamar addAluno, senão, quando alterar o valor do objeto, ele vai refletir em todos os lugares ao mesmo tempo.

Não sei se o desenho em anexo ajuda a entender o problema, quem sabe. :slight_smile:

P
ah agora entendi o q estava fazendo errado! :oops: olha só fiz do jeito q tu disseste ,criei um objeto do tipo Aluno1 em cada laço dai tipo agora aparece todos os itens na tabelaso q tipo else não ficam na mesma linha pq eu to usando duas pesquisas,teria como eles ficarem? é q tipo numa pesquisa eu to usando o distinct e na outra eu não posso usar por isto fiz duas pesquisas...e mesmo assim meu distinct não ta funcionando eu acho pq na tabela aparece varias vezes a mesma disciplina e modulo :shock: meu codigo ficou assim
resultado = comando.executeQuery("select distinct disciplina,modulo from nota where rc_aluno='"+ t0.getText() +"'");
			while(resultado.next())
			{
				for(int i=0;i<k.length;i++)
				{
					k[i]=resultado.getString(1);
					k1[i]=resultado.getString(2);
					
					Aluno1 socio1=new Aluno1();
						socio1.setTelefone(k[i]);
						socio1.setModulo(k1[i]);
						model.addAluno(socio1);
				}
			}


			for(int i=0;i<x.length;i++)
			{	
				resultado = comando.executeQuery("select atividade,nota from nota where rc_aluno='"+ t0.getText() +"'and disciplina='"+ k[i] +"' and modulo='"+k1[i] +"'");
				while(resultado.next())
				{
					x[i]=resultado.getString(1);
					x1[i]=resultado.getString(2);
					Aluno1 socio1=new Aluno1();
						socio1.setAtividade(x[i]));
						socio1.setMensalidade(x1[i]);
						model.addAluno(socio1);
				
				}
			
			}
	
			table = new JTable(model);
obg pela ajuda
visola

Paty, você não precisa de duas consultas. O distinct que você colocou na verdade você não quer… eu acho. Pelo que entendi das coisas que você está colocando no aluno e no modelo, você quer uma tabela com as notas de todos os alunos por atividade, é isso mesmo? Se for, acho melhor você fazer da seguinte forma:

resultado = comando.executeQuery("select nota, atividade, disciplina, modulo from nota where rc_aluno='"+ t0.getText() +"'");  
while(resultado.next())  
{  
	for(int i=0;i&lt;k.length;i++)  
	{  
		Aluno1 socio1=new Aluno1();  

		// Preenche com os dados
		socio1.setMensalidade(resultado.getString("nota"));
		socio1.setAtividade(resultado.getString("atividade"));
		socio1.setTelefone(resultado.getString("disciplina"));  
		socio1.setModulo(resultado.getString("modulo"));

		model.addAluno(socio1); // Adiciona no modelo
	}  
}

Uma coisa que notei ao fazer o código acima é que os nomes da suas colunas na tabela não estão de acordo com os setters que você está chamando no seu objeto aluno, isso tá certo??? Toma cuidado porque esse tipo de coisa só vai adicionando confusão no seu código, você vai esquecer qual mapeou para qual e vai fazer errado, cedo ou tarde.

Outra coisa… não precisa desses arrays, até onde eu consigo ver, você não usa eles para mais nada. Não precisa colocar os dados nos arrays para depois colocar no objeto Aluno, pode fazer tudo de uma vez só, a não ser que esteja usando eles para outra coisa. Além do quê, ainda corre o risco de inserir mais dados no banco e eles não caberem no array, aí você vai acabar jogando uma exceção ArrayIndexOutOfBoundsException.>

P

humm
sei que tenho q tomar mais cuidado com os codigos pois eles ficam bem confusos mesmo com os nomes trocados digamos assim
vou editar o codigo e qualquer coisa volto a postar!!
bah mtoo obg pela ajuda!!!
=]

P
bah obg Visola, conseguimos resolver o problema!!! mas posso te alugar mais um pouco? como eu poderia fazer para tipo inves das atividades ficarem uma embaixo da outra elas ficarem do lado.Eu pensei em criar colunas de acordo com o numero de atividades de cada disciplina mas isto no meu defaulttablemodel.Tipo estou fazendo o seguinte metodo
public void pesquisa()
	{
		try {int q=0;	
		String f=null;
		System.out.println("select max(ch_total) from cargahoraria ");
			resultado=comando.executeQuery("select max(ch_total) from cargahoraria ");
			while(resultado.next())
			{
				f=resultado.getString(1);
				System.out.println(f);
			}
			q=Integer.parseInt(f);
			atividades=new String[q];
			System.out.println("valor de q "+q+" valor de f "+f);
			for(int i=0;i<atividades.length;i++)
			{
				atividades[i]="atv"+i;
				colunas[i]=atividades[i];
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
tipo qria pegar o maior valor da ch e criar uma tabela com a quantidade de atividades deste mesmo valor tipo se a maior ch_total for 5 fazer 5 colunas de atividade,isso é possivel? eu só trago problemas neh? :) :lol: bg pela ajuda!!!
P

consegui criar as colunas dakela maneira q eu havia dito antes mas agora a questão é q os valores resultados das pesquisas não ficam nos lugares corretos,ha uma maneira de alinhar isto?
obg

visola

No seu TableModel você diz qual dado vai aparecer em qual coluna. Como está o seu TableModel?

P
no meu tablemodel eu só defino os nomes das colunas tipo agora eu ate consegui resolver o problema dos campos das atividades tipo ja ta dando para instanciar as colunas de atividades de acordo com o numero de atividades registradas no banco. Mas na classe em q utilizo meu default ao fazer a pesquisa para preencher a tabela tipo os dados não ficam no lugar certo com exceção nas colunas disciplinas e modulos dai eu pensei no seguinte pegar todas as atividades jogar num vetor e depois fazer um for para inserir cada item em uma coluna de atividade o codigo ficou assim
resultado = comando.executeQuery("select disciplina,modulo,nota,atividade from nota where rc_aluno='"+ t0.getText() +"'");
			while(resultado.next())
			{
					Aluno1 socio1=new Aluno1();
						socio1.setDisciplina(resultado.getString(1));
						socio1.setModulo(resultado.getString(2));
						
						socio1.setNota(resultado.getString(3));
						v[q]=resultado.getString(4);
						q++;
						
						for(int i=0;i<model.getColumnCount();i++)
						{
							System.out.println(model.getColumnName(i));
							if(model.getColumnName(i).equalsIgnoreCase("atv"))
								socio1.setAtividade(v[i]);
							model.addAluno(socio1);
						}
						model.addAluno(socio1);
				
			}
mas ainda não ta dando mto cert :oops: obg pela ajuda =]
P

genteeeeeee!
bah ainda não consegui ordenar isto!=[
e o pior eu vi q conforme eu aumento o tamanho da minha tabela eu aumento meu numero de linhas bem no momento meu codigo é o seguinte

Aluno1TableModel model; private void geraTabela3() { try { model=new Aluno1TableModel(); String v[]=new String[13];int q=0; resultado = comando.executeQuery("select disciplina,modulo,nota,atividade from nota where rc_aluno='"+ t0.getText() +"'"); while(resultado.next()) { //primeiro pegar todos os campos preenchidos e depois organiza-los lado a lado na jtable Aluno1 socio1=new Aluno1(); socio1.setDisciplina(resultado.getString(1)); socio1.setModulo(resultado.getString(2)); //socio1.setAtividade(resultado.getString(3)); socio1.setNota(resultado.getString(3)); v[q]=resultado.getString(4); q++; //fazer um for e ir add o conteudo de v nas colunas for(int i=3;i<model.getColumnCount();i++) { System.out.println(model.getColumnName(i)); if(model.getColumnName(i).equalsIgnoreCase("atv")) { socio1.setAtividade(v[i]); model.addAluno(socio1); System.out.println("valor "+v[i]+" na pos "+i); } } model.addAluno(socio1); }
tipo minha tabela ta ficando como o print abaixo
obg pela ajuda


Marky.Vasconcelos

Seu TableModel já é responsavel por popular as colunas, voce só precisa adiconar a linha.

Seu codigo deveria ser somente o seguinte:

Aluno1TableModel model;
	private void geraTabela3()
	{
		try
		{
			model=new Aluno1TableModel();	
			resultado = comando.executeQuery("select disciplina,modulo,nota,atividade from nota where rc_aluno='"+ t0.getText() +"'");
			while(resultado.next())
			{
				//primeiro pegar todos os campos preenchidos e depois organiza-los lado a lado na jtable
				Aluno1 socio1=new Aluno1();
				socio1.setDisciplina(resultado.getString(1));
				socio1.setModulo(resultado.getString(2));
				socio1.setNota(resultado.getString(3));
				socio1.setAtuvidade(resultado.getString(4));

				model.addAluno(socio1);
	}
P

oi
ah eu tentei desta forma mas não deu muito certo como tu podes ver no print em anexo ,eu deveria usar o getvalueat()?
teria como?
obg


P

alguem pode me ajudar?
mto obg
=]

visola

Paty, você ainda não mostrou o que está dentro do seu TableModel. Mas pela imagem que você mandou, você está, para cada linha na tabela, associando várias atividades. Se você quer agrupar os registros por Disciplina/Módulo então é melhor usar combos fora da tabela para disponibilizar essa seleção para o usuário.

Se a idéia é mostrar uma tabela com as notas do usuário por atividade, então no seu modelo você deve ter apenas a atividade e a nota, não a disciplina nem nada disso. O correto seria o usuário selecionar o aluno, a disciplina e obter a tabela com todas as notas das atividades naquela disciplina. Se não for isso que vocẽ quer, então vamos precisar melhorar seu modelo.

O problema está no array “v” que você está usando. Por favor, mostre o código do seu TableModel para que possamos te ajudar. Mas como eu já tinha dito e como o Marky disse, você deveria apenas adicionar a instância do aluno e o modelo fazer o restante.

P

ok em anexo a esta mensagem estou enviando meu modelo
mas o q eu realmente queria era exibir as atividades,nota referente a qual disciplina e modulo de acordo com o aluno que esta sendo selecionado na pesquisa acima,tipo eu tambem acho que utilizando as combos tudo ficaria bem mais simples mas meu usuario quer ver tudo nesta tabela =[ sem precisar ficar trocando para cada disciplina,há uma outra maneira?
muito obrigada pela ajuda
=]

visola

A não ser que todos os módulos tenham a mesma quantidade de atividades, não. Se eles tiverem exatamente a mesma quantidade, então o nome da atividade poderia aparecer como uma coluna e a nota na linha reference. Aí você poderia fazer do jeito que está fazendo, com um vetor.

P

Visola tu tens razão é que cada modulo vai ter uma quantidade de disciplinas diferentes de acordo com a carga horaria do modulo
como eu arrumo isso? :shock:
obg pela ajuda

visola

Sua tabela vai ter que ter a quantidade de colunas variável. Por exemplo… se o aluno participou de duas disciplinas e uma delas teve quatro atividades e a outra só duas, então a tabela vai ter seis colunas: módulo, disciplina, atividade 1, 2, 3 e 4. Sendo que na disciplina que teve somente duas atividades, as duas últimas colunas vão estar vazias.

Você tem que tratar isso dentro do seu TableModel. Como fazer, existem várias maneiras… dá uma pensada e qualquer coisa posta aqui.

P
oi Visola, eu consegui fazer o controle destas atividades desta maneira que tu disseste,fazendo o seguinte:
int q=0;	
			String f=null;
			resultado=comando.executeQuery("select max(ch_total) from cargahoraria ");
			while(resultado.next())
			{
				f=resultado.getString(1);
				
			}
			q=Integer.parseInt(f);
			atividades=new String[q];
		
			colunas=new String[q];
				colunas[0]="Disciplina";
				colunas[1]="Modulo";
				colunas[2]="Nota";
			
			for(int i=3;i<atividades.length;i++)
			{
				atividades[i]="atv";
				colunas[i]=atividades[i];
				
			}
da bem certinho mas meu biggest problem esta em ordenar os resultados da pesquisa do banco nas tabelas.Como eu arrumo estes itens na jtable,tipo como eu faço para os campos ficarem certinhos tipo: disciplina|modulo|atv|atv| bio |1 |T |F se no banco tivesse estas atividades relacionadas a este modulo e disciplina.Como eu arrumo isto? Obrigada pela ajuda =]
visola

Usa o ORDER BY do SQL. Isso deve resolver o problema já que você está colocando os registros na ordem que eles vêm do banco.

P

ola,
tentei usar order by disciplina,modulo,atividade e nota mas não funcionou=[
o problema é que os itens relativos a uma disciplina estão sendo inseridos em todas as outras=[ pelo menos é o que parece
tipo se eu usasse o distinct isto ate poderia resolver parte do problema mas não solucionaria a questão e me causaria problemas maiores ja que se existissem notas iguais apenas uma aparecia …
sera que o problema é na maneira pela qual estou pesquisando?deveria armazenar de maneira diferente?
obrigada pela ajuda
=]

visola

Muitas perguntas sobre o seu próprio código e estrutura de dados.
Eu não tenho seu código aqui, nem seu banco. Não consigo responder nenhuma delas.
Se quiser postar suas tabelas para sabermos como está trabalhando, talvez possamos ajudar.

P

minha tabela está organizada conforme o print(tabela_nota) em anexo tu podes ver que as atividades estão organizadas uma abaixo da outra e na tabela eu quero colocar uma ao lado da outra e é isto que não estou conseguindo fazer=[
ah ignore [] no campo de observação da tabela,é resultado de outros testes que não estão relacionados a este problema ah e vou mandar de novo um print da minha tabela usando o meu defaulttablemodel
obrigada pela ajuda




visola

Agora ficou um pouco mais claro. Você precisa agrupar os seus dados usando a disciplina e atividade como chave.
Pode usar um HashMap para fazer isso. Ficaria melhor você ter o array com as notas dentro do objeto aluno, ao invés de ser um objeto separado como você está fazendo. Na verdade, dentro do aluno você poderia ter um ArrayList com as notas:

public class Aluno {
   // outros campos aqui
   private ArrayList&lt;String&gt; notas = new ArrayList&lt;String&gt;();

   public void addNota(String nota) {
      notas.add(nota);
   }

   // outros métodos aqui, incluindo getters e setters

Para agrupá-los, use algo como o seguinte:

Map&lt;String, Aluno&gt; notas = new HashMap&lt;String, Aluno&gt;();
while (rs.next()) {
   String disciplina = rs.get("disciplina");
   String atiividade = rs.get("atividade");
   String concat = disciplina.concat(atividade);
   Aluno nota = notas.get(concat);

   // Primeira nota para essa disciplina/atividade
   if (nota == null) {
      nota = new Aluno();
      nota.setDisciplina(disciplina);
      nota.setAtividade(atividade);
      notas.put(nota);
   }

   nota.addNota(rs.get("nota"));
}

Collection&lt;Aluno&gt; notasCollection = notas.values(); // usa isso para montar seu TableModel

Não sei se deu para entender. Eu sugiro você criar outra classe para armazenar esses valores ou mudar o nome da sua classe (Aluno) porque isso está deixando o seu código bastante confuso.

P

Com base nas informações e explicações que tu me deste fiz algumas alterações na minha classe aluno.
Estou enviando ela em anexo para que tu possas ver como ficou…só uma duvida eu deveria ter feito o agrupamento na classe do meu default ou era na classe aluno?bem na classe que estou enviando este agrupamento esta na classe aluno :oops: bem de qualquer forma vou testar das duas formas e qualquer coisa eu volto a postar!
muitooo obrigada pela ajuda

P

Vi,
tentei colocar na classe da minha default(estou enviando em anexo),mas acho que fiz algo errado pois quando tento utilizar meu modelo em outra classe para criar a tabela da nullpointerexception nesta linha model=new Aluno1TableModel();
e se eu uso este codigo na classe aluno tambem da nullpointerexception nesta linha Aluno1 aluno=new Aluno1();
esqueci de fazer algo?escrevi algo errado no codigo?eu to colocando no lugar errado os itens?
mto obg pela ajuda

visola

Não sei. Não consegui achar nada. Vai ter que investigar mais por aí.

Sei que já falei isso algumas vezes, mas acho que você precisa refazer o seu modelo porque está te deixando confusa na hora de processar os dados.

Seria melhor você ter mais de uma tabela, uma estrutura interessante conteria as seguintes tabelas:
Aluno - somente os dados do aluno
Disciplina - dados da disciplina
Atividade - atividades de cada disciplina, contem um apontamento para a disciplina
Nota - relaciona um alulno com uma atividade e a nota na atividade
Disciplinas_Aluno - relaciona quais as disciplinas que o aluno está matriculado (apontamento para disciplina e aluno)

P

ok Vi,
vou editar meu defaulttable model ,sei que meus códigos são bastante confusos mas é que a primeira vez que utilizo interface gráfica,ireports,banco de dados e não tenho tanto conhecimento sobre estes assuntos então as vezes faço codigos enormes que poderiam ser substituidos por outros bem menores=[
qualquer coisa eu posto!
e mto obg pela ajuda e dicas

P

aiin
bah ainda nao consegui arrumar este modelo,o problema é q o modelo ta certinho como é para ser mas a minha tabela no banco que ta muito estranho.
sabe como gerar fk no mysqlfront?
obg

visola

Não sei. Não uso Mysqlfront. Trabalho com MySQL direto na linha de comando.
Mas porque FK são tão importantes para você?
Acho que o mais importante é encaixar os dados do seu modelo nos objetos que têm na sua aplicação.

P

é que tipo vou mandar um print da tabela onde quero tirar o conteudo e outro de como esta minha tabela é que tipo eu não sei explicar direit :oops:
mtoo obg




visola

É verdade… não deu para entender direito.
Você primeiro precisa entender o seu problema antes de tentar resolvê-lo.
Comece por entender a estrutura dos dados e como eles se relacionam.
Depois você tem que entender o que sua tela faz e quais dados ela precisa.
Por último, tem que descobrir uma maneira de transformar os dados que tem nos dados que precisa.

P

visola:
É verdade… não deu para entender direito.
Você primeiro precisa entender o seu problema antes de tentar resolvê-lo.
Comece por entender a estrutura dos dados e como eles se relacionam.
Depois você tem que entender o que sua tela faz e quais dados ela precisa.
Por último, tem que descobrir uma maneira de transformar os dados que tem nos dados que precisa.

ok estou lendo sobre normalização http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados
mas ja vi que a estrutura que devo moldar no meu banco se baseia nesta relação

Cada aluno tem algumas disciplinas
Cada disciplina tem alguns módulos
Cada disciplina tem algumas atividades
Cada aluno faz atividades relacionadas aos módulos de cada uma de suas disciplinas

P
depois de criar um modelo de tabela o metodo que preenche a tabela(jtable)é este
Aluno1TableModel model;
	private void geraTabela3()
	{
		try
		{ 
	            model=new Aluno1TableModel();     
	            resultado = comando.executeQuery("select disciplina,modulo,nota,atividade from nota where rc_aluno='"+ t0.getText() +"'");  
	            while(resultado.next())  
	            {  
	                //primeiro pegar todos os campos preenchidos e depois organiza-los lado a lado na jtable  
	                Aluno1 aluno=new Aluno1();  
	                aluno.setDisciplina(resultado.getString(1));  
	                System.out.println("disciplina inserida( "+resultado.getString(1)+" )");
	                aluno.setModulo(resultado.getString(2));  
	                System.out.println("modulo inserido( "+resultado.getString(2)+" )");
	                aluno.setNota(resultado.getString(3));  
	                System.out.println("nota inserida( "+resultado.getString(3)+" )");
	                aluno.setAtividade(resultado.getString(4));  
	                System.out.println("atividade inserida( "+resultado.getString(4)+")");
	  
	                model.addAluno(aluno);  
	    
	            }
			table = new JTable(model);

			

			JScrollPane scroller = new JScrollPane(table);
			scroller.setVisible(true);
			scroller.setBounds(20, 270, 700, 150);
			painel.add(scroller, null);
			//fazer com que todos os itens do array de disciplina seja add na jtable

		}
		catch (SQLException erro) {
			erro.printStackTrace();
		}
	}
o problema é q os itens não ficam na posição certa :| na jtable mas pelo que pude perceber no console é que não estão vindo varias vezes os mesmos valores ja que o console esta assim
disciplina inserida( biologia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida( T)
disciplina inserida( biologia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida( PcP)
disciplina inserida( biologia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida( PcP)
disciplina inserida( biologia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida( F)
disciplina inserida( biologia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida( PcP)
disciplina inserida( biologia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida(  )
disciplina inserida( biologia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida(  )
disciplina inserida( portugues )
modulo inserido( 1 )
nota inserida( 3.0 )
atividade inserida( F)
disciplina inserida( geografia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida(  )
disciplina inserida( geografia )
modulo inserido( 2 )
nota inserida( 3.0 )
atividade inserida( F)
disciplina inserida( quimica )
modulo inserido( 1 )
nota inserida( 3.0 )
atividade inserida( F)
disciplina inserida( historia )
modulo inserido( 5 )
nota inserida( 3.0 )
atividade inserida( PcP)
disciplina inserida( historia )
modulo inserido( 1 )
nota inserida(  )
atividade inserida( T)
mas como eu arrumo isso na jtable para não ficar varias vezes os mesmos valores e nem aparecer nas colunas erradas? obg
Criado 26 de fevereiro de 2011
Ultima resposta 13 de abr. de 2011
Respostas 41
Participantes 3