Dúvida Jtable

17 respostas
A

Pessoal gostaria de saber como faço para colocar os dados de uma tabela para um determinado campo por exemplo:

Tenho uma tabela com 3 colunas :Código, Nome, Cidade
E 3 campos com os mesmo nome,

A ideia é fazer com que o usuário ao selecionar uma determinada linha na tabela, os dados daquela linha faria um auto-preenchimento nos campos, ou seja:

Tabela:
Código / Nome / Cidade
001 / Marco / SP

Quando o usuário clicar ficaria assim:

Campos:

Código: 001
Nome: Marco
Cidade: SP

???

17 Respostas

Fexx

Voce pode criar um metodo pra isso.

public String getNome() {
		int linha = jTConsultaCliente.getSelectedRow(); //pega a linha selecionada através do método getSelectedRow(),  jTConsultaCliente é minha tabela
		String nome = (String) jTConsultaCliente.getValueAt(linha, 1); // o valor da linha especificando a coluna, nesse caso a coluna 1, e vc pode converter em String para aceitar em um JtextFiled 
		return nome;
	}

Tenta ai.

Abraços.

Fica com DEUS.

A

Outra duvida quero atualizar meu banco através de uma tabela , eu até tentei mas está dando um erro:

Codigo Dao atualizar:

abrirBanco();
        pstmt = con.prepareStatement("UPDATE clientes set cli_nome = ?, cli_cidade = ?, cli_sexo = ? where cli_codigo = ?");
        pstmt.setString(1, p.getNome());
        pstmt.setString(2, p.getCidade());
        pstmt.setString(3, p.getSexo());
        pstmt.setInt(4, p.getCodigo());
        pstmt.execute();
        fecharBanco();

Código atualizar banco através da tabela:

if (jTable1.getSelectedRow() >= 0) {  
       String descricao = JOptionPane.showInputDialog(null, "Nova Descricao", "Descricao", JOptionPane.INFORMATION_MESSAGE);  
       if (descricao != null && !descricao.trim().isEmpty()) {  
           int row = jTable1.getSelectedRow();  
           Cliente p = dtm.getProduto(row);         // mas está dando erro nesta linha (275)
  
           //crio novo objeto para alteracao  
           Cliente pUpdate = new Cliente();  
           pUpdate.setCodigo(p.getCodigo());  
           pUpdate.setNome(p.getNome());  
           pUpdate.setCidade(p.getCidade());  
           pUpdate.setSexo(p.getSexo());  
           new ClienteDao().Atualizar(pUpdate);  
           dtm.updateRow(pUpdate, row);  
       }  
   } else {  
       JOptionPane.showMessageDialog(null, "Selecione a linha q deseja alterar", "Alterar", JOptionPane.WARNING_MESSAGE);  
   }

Erro:

GRAVE: null  
java.lang.NullPointerException  
    at Principal.jButton7ActionPerformed(Principal.java:275)

Acredito conseguir resolver este problema consigo matar dois coelhos em uma cajadada só.

A

o código atualizar está funcionando, mas só através de um botão mas quero ao clicar em um determinado campo ao alterar salva automaticamente no meu Banco

Fexx

tenta pega o valor da linha, com a coluna:

public int valorLinha() {
		int linha = jTConsultaCliente.getSelectedRow();
		int valorLinha =  (Integer) jTConsultaCliente.getValueAt(linha, 3);
		return valorLinha;
	}
A

Cara, vou te mandar um projeto no qual funciona

da uma olha e me fala:

eu uso o NetBeans:

este projeto peguei como exemplo, o unico diferencial é que o projeto usa Access e eu uso Mysql

e vou mandar o meu também

se tiver como dar uma olhada não consegui ver diferença

Fexx

Acho que entendi o que você quer.
Criei um aqui, para ver se é isso que vc quer.

veja se realmente é isso.

Fexx

ver ai.

Fexx

Fiz o código, correndo, então não repare na bagunça. kkk

Nicolas_Fernandes

alucardmaas:
Pessoal gostaria de saber como faço para colocar os dados de uma tabela para um determinado campo por exemplo:

Tenho uma tabela com 3 colunas :Código, Nome, Cidade
E 3 campos com os mesmo nome,

A ideia é fazer com que o usuário ao selecionar uma determinada linha na tabela, os dados daquela linha faria um auto-preenchimento nos campos, ou seja:

Tabela:
Código / Nome / Cidade
001 / Marco / SP

Quando o usuário clicar ficaria assim:

Campos:

Código: 001
Nome: Marco
Cidade: SP

???


Antes de tudo, [color=red]BANA O DEFAULTTABLEMODEL DA SUA VIDA![/color]
Aprenda a criar o próprio modelo de tabela, onde você vai trabalhar com objetos ao invés de linha/coluna e vários casts. Vale MUITO mais a pena.
Siga o meu link na assinatura para aprender como desenvolver o seu próprio modelo de tabela.

Quando fizer isso, você pode criar um método que retorna o objeto da linha selecionada:

public Entidade recuperarObjeto(int linha) { return colecao.get(linha); }

Espero ter ajudado,
fique com Deus! :smiley:

A

Eu uso TableModel, Classe Dao

Se vc reparar bem no codigo citado eu uso um metodo que criei na minha tabela modelo

if (jTable1.getSelectedRow() >= 0) {    
       String descricao = JOptionPane.showInputDialog(null, "Nova Descricao", "Descricao", JOptionPane.INFORMATION_MESSAGE);    
       if (descricao != null && !descricao.trim().isEmpty()) {    
           int row = jTable1.getSelectedRow();    
           Cliente p = dtm.getProduto(row);         // mas está dando erro nesta linha (275)  , e também aqui é o método  que pega a linha e passa para o objeto, mas está dando erro aqui nesta linha
    
           //crio novo objeto para alteracao    
           Cliente pUpdate = new Cliente();    
           pUpdate.setCodigo(p.getCodigo());    
           pUpdate.setNome(p.getNome());    
           pUpdate.setCidade(p.getCidade());    
           pUpdate.setSexo(p.getSexo());    
           new ClienteDao().Atualizar(pUpdate);    
           dtm.updateRow(pUpdate, row);    
       }    
   } else {    
       JOptionPane.showMessageDialog(null, "Selecione a linha q deseja alterar", "Alterar", JOptionPane.WARNING_MESSAGE);    
   }
Nicolas_Fernandes

Qual o erro que aparece?

A

Olha o erro:

15/03/2012 17:11:40 Principal jButton7ActionPerformed
GRAVE: null
java.lang.NullPointerException
	at Principal.jButton7ActionPerformed(Principal.java:279)
	at Principal.access$600(Principal.java:12)
	at Principal$7.actionPerformed(Principal.java:95)
	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:6290)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6055)
	at java.awt.Container.processEvent(Container.java:2039)
	at java.awt.Component.dispatchEventImpl(Component.java:4653)
	at java.awt.Container.dispatchEventImpl(Container.java:2097)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
	at java.awt.Container.dispatchEventImpl(Container.java:2083)
	at java.awt.Window.dispatchEventImpl(Window.java:2482)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:607)
	at java.awt.EventQueue$1.run(EventQueue.java:605)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:621)
	at java.awt.EventQueue$2.run(EventQueue.java:619)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
	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)
A

a linha que aponta o erro é está:

p = dtm.getProduto(row);

O que está acontecendo aí, a tabela está passando os dados da linha para o objeto que depois irá passar os dados para outro objeto, no qual fará o update para o banco, agora o porque deste erro eu não sei, é na hora que a tabela passa para o objeto.

Nicolas_Fernandes

alucardmaas:
a linha que aponta o erro é está:

p = dtm.getProduto(row);

O que está acontecendo aí, a tabela está passando os dados da linha para o objeto que depois irá passar os dados para outro objeto, no qual fará o update para o banco, agora o porque deste erro eu não sei, é na hora que a tabela passa para o objeto.


Depure o código a partir dessa linha.
Você instanciou a variável dtm?

A

Sim, no código não está dando erro nenhum as variáveis estão todas ok, o grande problema e o poruq e eu não consigo passar os valores da tabela para o objeto.

Nicolas_Fernandes

alucardmaas:
Sim, no código não está dando erro nenhum as variáveis estão todas ok, o grande problema e o poruq e eu não consigo passar os valores da tabela para o objeto.
Depure direitinho o seu código. Você vai ver que deixou alguma coisa escapar. Aliás, poste o seu código para tentarmos achar juntos onde você esqueceu de instanciar!

A

Nicolas consegui cara, você nem imagina o que estava acontecendo rs, mas valeu mesmo pela atenção e ajuda qualquer coisa mando o projeto ok, mas como estou começando a programar, com certeza vou ter mais duvida, mas valeu cara, espero sempre contar com você.

Qualquer coisa posto o projeto inteiro para ajudas futuras

Criado 14 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 17
Participantes 3