[resolvido] jTable

ola, sempre visualizo o forum e consigo achar minhas duvidas pesquisando no mesmo. mas agora to a tarde inteira tentando fazer algo simples e nao consigo de jeito nenhum!
desculpem a ignorancia, começei a trabalhar com programação a 1 mes e meio no maximo!

tenho uma classe jFrame com alguns campos(nome, endereço,estado,etc…)
nesta classe eu pego as informações e jogo em variaveis! ae pronto, tenho tudo que o usuario digitou em algumas variaveis(sei que o correto eh com banco de dados, mas estou fazendo assim para aparender)
BELEZA nesta classe esta tudo ok.

criei uma outra classe Jframe que mostra o valor daquelas variaveis (ou seja, os dados do usuario)
aprensentava esses dados em um jAreaText.

agora preciso mostrar esses dados em uma tabela, criei a tabela com um modelo (criado automaticamente pelo netbeans)
NAO CONSIGO de jeito nenhum colocar essas variaveis na tabela (cada variavel em uma coluna e todas na mesma linha)

se consegui me expressa e alguem entendeu minha duvida, espero que me ajude!
Grato Cesar

Olá amigo, tente assim:

jTable1.setValueAt(variavel,linha,coluna);

Aprenda a criar um TableModel: http://www.guj.com.br/posts/list/15/199067.java#1001295

GRANDE djJoe !
consegui com esse codigo cara, MUITO OBRIGADO!
pesquisei a tarde inteira e nao achei isso.
meu codigo fico assim:

    jTable1.setValueAt(nome, 0, 0);
    jTable1.setValueAt(endereco, 0, 1);
    jTable1.setValueAt(email, 0, 2);
    jTable1.setValueAt(telefone, 0, 3);
    jTable1.setValueAt(estado, 0, 4);
    jTable1.setValueAt(sexo, 0, 5);
    jTable1.setValueAt(interesses, 0, 6);
    jTable1.setValueAt(biografia, 0, 7);

nao querendo abusa, mas e se eu quise colocar na tabela informações de um array.
Por exemplo:

as variaveis acima estao em um array = MeuArray{nome,endereco,email,telefone,estado,sexo,interesses,biografia}
e poderia fazer assim:

    jTable1.setValueAt(MeuArray[0], 0, 0);
    jTable1.setValueAt(MeuArray[1], 0, 1);
    jTable1.setValueAt(MeuArray[2], 0, 2);
    jTable1.setValueAt(MeuArray[3], 0, 3);
    jTable1.setValueAt(MeuArray[4], 0, 4);
    jTable1.setValueAt(MeuArray[5], 0, 5);
    jTable1.setValueAt(MeuArray[6], 0, 6);
    jTable1.setValueAt(MeuArray[7], 0, 7);

mas nao existe um comando que faça isso automaticamente?

GRATO.

Que bom que deu certo.
use um loop:


 for (int i=0;i<8;i++){

jTable1.setValueAt(MeuArray[i],0,i);

}

SEM PALAVRAS djJoe!
muito obrigado pela ajuda, to no nivel basico do basico de java (deve ter percebido hehehehe)

Cesar,

apensar de você ter aparentemente resolvido seu problema dá uma olhada neste post: http://www.guj.com.br/java/35481-alimentar-um-jtable-com-uma-select

[]'s

Não se engane. Enquanto estiver usando a tabela desse jeito você estará criando problemas, não resolvendo. Aprenda a criar seu próprio TableModel. Ser inexperiente não é desculpa para também ser preguiçoso.

ViniGodoy, nem acho que seja questão de preguiça. Como ele mesmo disse faz pouco tempo que está programando, e no começo é difícil ter um senso crítico quanto às soluções que são passadas por outras pessoas. Como ele não conhece nada de JTable ele pode ter achado que esta solução apresentada pelo primeiro exemplo é a melhor (ou única).

Cesar, neste link que passei tem um exemplo completo de como criar uma AbstractTableModel, com DefaultTableColumnModel e DefaultTableCellRenderer.

[]'s

Acho que me expressei mal (acabei sendo sucinto demais pois estava escrevendo do meu celular).

Não estou falando que ele está com preguiça. Queria dizer que ele deve estudar isso daqui em diante, e não pode usar como argumento o fato de “sou iniciante e, assim é mais fácil, e já resolveu, vlw.” Essa alegação (que ele ainda não usou), sim, é de quem tem preguiça de estudar.

Enquanto estiver usando DefaultTableModel, o problema não está resolvido.

Ok amigos, de fato vocês estão certos, quis apenas dar uma “luz” à ele, se vocês prestarem mais atenção nos posts dele verá que ele não é só iniciante em java, mas sim em programação, eu também me considero iniciante, para ter um conhecimento igual ao seu “ViniGodoy” tenho que ralar muito, já li vários artigos e posts seu, inclusive no Ponto V, parabéns. Tá, mais voltando ao assunto, estou desenvolvendo um aplicativo de gerenciamento de frota para o meu irmão, estou usando o NetBeans, foi gerado um JTable e, sinceramente estou tendo problemas ( aproveitando o tópico ) até para adicionar e remover linhas, estou usando o BD Access e, apenas consigo inserir e consultar, mas, deletar e alterar não consigo. Ontem lendo um post o “ViniGodoy” citou que usando DefaultTableModel teria problema para fazer tais coisas, então, por que não dá certo?? é por causa do retono do metodo getValueAt?

Oi pessoal.

Só deixando claro novamente. Não vejo mal nenhum em você ser iniciante, ou em fazer as coisas erradas por desconhecimento. Mesmo depois de anos de profissão, errar por inexperiência ainda é comum.

Eu vejo mal é quando um iniciante do fórum (e isso é muito comum) continua fazendo errado mesmo depois de mostrarmos o caminho certo. Se vocês olharem o tópico que indiquei, você vai ver que os “veteranos” já criaram diversos tópicos, extremamente detalhados, explicando como criar e manter o seu TableModel.

Algumas pessoas, como o Mark, já dedicaram uma porção considerável de tempo para desenvolver uma API que substituísse o DefaultTableModel, sem as desvantagens deste.

djJoe, quanto ao seu problema. É difícil dizer só com as informações que você passou.
O seu código dispara alguma exception? Dá algum erro visível?

Você pode postar o trecho onde você faz a modificação e grava no BD?

Olá, essa é a parte do código:


public  static void atualizarMotoristas() throws SQLException{
        
  statement.executeUpdate("update CadastrarMotoristas set Name='"
   +AlterMot.AlterNometext.getText()+"', Matricula='"
   +AlterMot.AlterMatrText.getText()+"' where Name='"
   +ConsMots.jTable1.getValueAt(ConsMots.jTable1.getSelectedRow(),0)+"'");      
        
        JOptionPane.showMessageDialog(null, "ok");
    }

E esse é o erro geado:

07/01/2012 10:03:00 AlterMot jButton1ActionPerformed
SEVERE: null
java.sql.SQLException: [Microsoft][Driver ODBC Microsoft Access] Par?metros insuficientes. Eram esperados 1.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
at ConectAccess.atualizarMotoristas(ConectAccess.java:98)
at AlterMot.jButton1ActionPerformed(AlterMot.java:133)
at AlterMot.access$000(AlterMot.java:20)
at AlterMot$1.actionPerformed(AlterMot.java:69)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at ConsMots.jButton3ActionPerformed(ConsMots.java:210)
at ConsMots.access$100(ConsMots.java:22)
at ConsMots$3.actionPerformed(ConsMots.java:102)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at PrinFram.jMenuItem8ActionPerformed(PrinFram.java:225)
at PrinFram.access$200(PrinFram.java:23)
at PrinFram$3.actionPerformed(PrinFram.java:129)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 2 minutos 38 segundos)

Esse erro ocorre no Access quando o nome de uma coluna ou tabela está errado. Uma forma fácil de depurar em access é imprimir o texto daquela consulta no SQL, e então tentar usar-la no editor de consultas do próprio Access. Geralmente lá ele aponta exatamente o local que está errado. O nome do campo é mesmo Name, e não Nome?

Para melhorar seu código, é uma boa você usar um PreparedStatement. Isso vai deixar o código mais legível, evitar concatenação, e evitar problemas caso os dados das suas variáveis contenha um apóstrofe (vamos supor que vc vá cadastrar o motorista Arafat Al Kali’l).

Usar um PreparedStatement é muito fácil, seria assim:

PreparedStatement stmt = conn.prepareStatement("UPDATE CadastrarMotoristas SET Name=?, Matricula=? WHERE Name=?"); stmt.setString(1, AlterMot.AlterNometext.getText()); stmt.setInt(2, Integer.parseInt(AlterMot.AlterMatrText.getText())); stmt.setString(3, AlterMot.AlterNometext.getText()); stmt.executeUpdate();

Note que não tive que me preocupar com apóstrofes. O PreparedStatement cuida disso para mim (é mais prático ainda para campos de datas, pois vc não precisa se preocupar com o formato).

ViniGodoy, meu amigo, vou te chamar assim… meu amigo, sinceramente, posso dizer que estava à 4 dias com esse problema e revirei todo o banco, tabelas, campos e, nada. Estava ciente que não tinha problema no BD, mas, o campo Name, na verdade é Nome e, agora funcionou legal, tá excluindo e alterando com sucesso. Li uma 300x o campo Nome e só enxergava Name. Obrigado, vou estudar agora suas dicas sobre DefaultTableModel e PreparedStatement.

Obrigado!!

fico feliz que meu primeiro topico gerou duvidas e varios comentarios!
ViniGodoy - valeu pelas dicas, vou estudar sim (não tenho preguiça). Mas ainda nao estou fazendo nenhum programa especifico.
estou na empresa a 3 semanas e soh estou estudando, meu chefe que pediu para colocar variaveis dentro de uma tabela!
to começando, bem basico mesmo!!
agora tentarei colocar na tabela os dados de um banco de dados.
valeu galera, muito bom saber que posso conta com voces!!!
um obrigado a todos q comentaram aqui!
abraços