Ajuda Urgente

31 respostas
C

ai galera,
to começando a mexer com interface grafica e estou criando uma aplicação no netbeans no qual teria uma JTable. ela ja foi redimensionada toda direitinho, o problema eh que eu não estou conseguindo adicionar contatos nela.
alguem poderia me ajudar?

segue abaixo a classe na qual estou tentando adicionar

package logica;

import Logica.Contato;

import Logica.Endereco;

import Logica.Endereco;

import Logica.PessoaFisica;

import Logica.PessoaJuridica;

import java.util.*;
import javax.swing.JOptionPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

public class Agenda{
private ArrayList <Contato> listaContatos = new ArrayList <Contato>();

//serve para usar o metido adicionar contato no botã

private static Agenda Instancia;

public static Agenda getInstanciae(){

if(Instancia == null){

Instancia = new Agenda();

}

return Instancia;

}
public void adicionarContato(Contato a){
   JTable tabela = new JTable();
        tabela.setValueAt(a, 1, 1);
        listaContatosPF.add(a);
}

}

aguardo respostas!

31 Respostas

erico_kl

olá…
você está setando valores todos na mesma célula.

public void adicionarContato(Contato a){ JTable tabela = new JTable(); tabela.setValueAt(a, 1, 1); listaContatosPF.add(a);
use o método addRow do DefaultTableModel passando um array de Object como parametro…

por exemplo… digamos que sua tabela tenha 2 colunas (Nome e Telefone)

DefaultTableModel dtm = (DefaultTableModel)table.getModel(); dtm.addRow(new Object[] {contato.getNome(), contato.getTelefone()});

C

to começando a entender basicamente

então meu codigo está ficando assim

passei intao mais ainda continua do mermu jeito

erico_kl

é… tu deve fazer isso depois de criar a tabela…
e por que tu precisa daquele ArrayList?

C

eu adiciono um contato nakele arraylist

nao eh assim?

intao no caso eu iria cadastrar na tabela eh isso?

erico_kl

se tu já está listando na tabela não precisa criar um ArrayList… se você precisar um depois pode percorrer a tabela num método separado e criar… mas acredito que não seja necessário…

C

tudo bem, agora esta assim, poderia me dizer o pq do erro ainda?

erico_kl

essa tabela é uma JTable… não um Object

C

isso, deu praticamente certo, ao menos os erros nao estao mais aparecendo…porem, nao esta aparecendo na jtable

ficou assim

public class Agenda{

e a logica do meu botão esta assim

soh falta aparecer na tabela e ai ja fica inhord

erico_kl

tu definiu as colunas da tua table?

C

a partir do momento em que voce cria uma jtable e define quantas colunas voce ker usar, ele ja nao faz isso automaticamente?

se nao for ta ruim pq eu viajei

erico_kl

onde você definiu as colunas?

C

eu axo que eu não defini
eu axei que ele automaticamente ja definiria entendeu?
a unica coisa que eu fiz foi arrastar a tabela e dpois nas propriedades trocar os nomes para, nome, endereço, etc.!

esse lance de colunas ai, o que eh necessario?na mesma classe aiq eu estou fazendo esse codigo eh isso?

erico_kl

tu pode passar as colunas/linhas no próprio constructor da classe DefaultTableModel
daí tu seta o model na tabela

C

mais nao tem uma classe DefaultTableModel no meu, ou pelo menos eu acredito que não!

as unicas que tem são, agenda, contato, endereço, pessoa fisica, pessoa juridica e dois jframe Tela, JanelaPrincipal.

eu teria intao que criar uma classe DefaultTableModel e fazer um construtor que recebem as linhas eh isso?

kra to viajando!

erico_kl

DefaultTableModel dtm = new DefaultTableModel(new Object [][] {}, new String [] {"Coluna 1", "Coluna 2"}) table.setModel(dtm);

C

kra, isso vai ser no botão ou no método?

pq esta assim agora

erico_kl

depois da criação da tabela

C

e a tabela não ja esta criada?

veio, agora embaralhou tudo!!

poderia me explicar ?

erico_kl

tu cria a tabela e depois seta o model dela…
isso na hora de criar os componentes da tela né… tu não tem um método que faz isso? que cria a tela, os botoes, os painéis e tal?

C

os metodos que eu tenho é de adicionar um contato, apenas esse…quais sao os metodos necessarios para que uma jtable funcione, se tratando apenas de adicionar linhas nela?

erico_kl

pelo que estou vendo tu não está utilizando MVC pro teu projeto, certo?

C

eu tenhu uma classe Agenda que cuida dos métodos no pacote logica, e no pacote apresentação eu tenho as jframes de agenda, intao os eventos dos botões ficam todas nas jframes tal…não eh isso?

erico_kl

entao tu não precisa ter uma JTable dentro da tua camada lógica…
crie a JTable somente na view (ou apresentação)… na hora de chamar a tela tu preenche a tabela

C

então fica no caso assim?

isso eh no evento do botão, esse botão , ao acionado ele ira cadastrar um contato na tabela:

erico_kl

não estou entendendo o motivo de tu ter uma JTable aí…
tu seta teu objeto e depois fecha a tela e então chama outra?
tu ta gravando esses dados em um banco?

C

nao nao…eh o seguinte, saca soh:

eu tenho duas telas, uma principal que tem a tabela e um botão pra adicionar contato, e outra tela que surge quando eu aperto o botao de adicionar contato.
ai nessa outra tela tem pra colocar nome, endereço e depois apertar em cadastrar…o que eu quero? que quando eu aperto no botão de cadastrar ele consigo colocar na tabela os dados entendeu agora?

erico_kl

ah… blz…
tu pode criar um JFrame em tempo de execução ou criar uma classe que extenda JFrame e montar tua própria tela e então passar os dados via constructor de uma tela para a outra…
ou então botar os campos na mesma tela da tabela…

C

nossa, se eu ja nao estava entendendo, agora intao…penou!

tipo, tu nao tem um exemplo no qual eu possa me situar?ou intao poderia passar pra vc por e-mail o trabalho pra q vc podesse entender melhor e assim tirar minhas duvidas.
isso se nao for atrapalhar eh claro!

erico_kl

cara… não tem mistério… sugiro pra ti botar os campos na mesma tela da tabela… vai facilitar pra ti

C

eh…eu vou ver o q posso fazer, qualquer coisa tento falr ctg d novo…obg ai pela ajuda velho…até outro dia!

pedromuyala

Esse link com conteúdo sobre MVC e nesse momento sendo discutido uma implementação de Agenda (página 16) poderá ser encontrado aqui!
Tanto teoria quanto implementação! E um pouco de Camadas, Pattern Observer, MVP e Exception’s.
Espero ter ajudado! :wink:

Criado 13 de novembro de 2009
Ultima resposta 24 de abr. de 2010
Respostas 31
Participantes 3