Enviar parâmetro de um JTabel para um campo num JDialog

3 respostas
M

Olá Pessoal!

Estou com outra dúvida básica… agora é a seguinte.
Tenho um JTable e preciso selecionar um item dessa tabela e clicar no botão alterar.
Ao fazer isso, gostaria de abrir um JDialog trazendo os campos preenchidos com os dados da linha do JTable selecionado.

No evento do botão, coloquei o seguinte código:

private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        int row = tbMensagens.getSelectedRow();           // Seleciono uma linha do JTable
        if (row != -1) {                                  // Se encontrou uma linha selecionada 
            Object id = tbMensagens.getValueAt(row, 0);   // Pego o conteúdo         
            int idInt=Integer.parseInt(id.toString());    // Converto para int
            
                                                          // Chamo o JDialog
            DG_CadMensagens msg = new DG_CadMensagens(this, true);
            msg.setEnabled(true);
            msg.setVisible(true);                  
        } else {                                          // Não tem linha selecionada no JTable
            JOptionPane.showMessageDialog(null,"Selecione Item a ser Aterado.");
        }           
    }

Mas não sei como enviar a variável idInt para o DG_CadMensagens
Será que devo mudar a forma de abrir o DG_CadMensagens?
Quero que o form que possui o botão de Alterar continue aberto por baixo do DG_CadMensagens.

Obrigado a quem possa ajudar!
Um abraço!

3 Respostas

charleston10

Eu utilizo isso em meus sistemas,
o que eu faço para a pessoa alterar selecionando no JTable, tenho uma classe com variaveis com getters e setters,

vc pode fazer assim, criar uma classe que vai guardar esse valor, depois quando entrar no formulario verificar se existe valor
nessa variavel e preencher os campos...

public class clsDados(){

    public static int idTable(); //id selecionado da tabela    
     
    public static int getIdTable() {
        return idTable;    }

  
    public static void setIdTable(int aIdTable) {
        idTable = aIdTable;
    }
}
private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                            
    int row = tbMensagens.getSelectedRow();           // Seleciono uma linha do JTable  
    if (row != -1) {                                  // Se encontrou uma linha selecionada   
        Object id = tbMensagens.getValueAt(row, 0);   // Pego o conteúdo           
        
        clsDados objDados = new clsDados();
        objDados.setIdTable(Integer.parseInt(id.toString()));    // Converto para int  
          
                                                    
        DG_CadMensagens msg = new DG_CadMensagens(this, true);   // Chamo o JDialog   
        msg.setEnabled(true);  
        msg.setVisible(true);                    
    } else {                                          // Não tem linha selecionada no JTable  
        JOptionPane.showMessageDialog(null,"Selecione Item a ser Aterado.");  
    }             
}
M

Oi Charleston10, me perdoe, mas não entendi muito a sua solução…

Bom, já tenho uma classe com getters e setters para essa tabela, mas ainda não percebi como faço para “capturar” o valor.

Consegue esclarecer melhor?!

Obrigado!

charleston10

É mais ou menos assim,
Nessa classe clsDados eu guardo o valor selecionado no JTable,

clsDados objDados = new clsDados();  
objDados.setIdTable(Integer.parseInt(id.toString()));    //pega o item selecionado

Depois disso, eu sei que o valor selecionado esta guardado nessa variavel;
Sendo assim, eu posso usar esse valor em qualquer parte do meu projeto.

Então no momento que vc abrir o JDialog vc pode verificar se existe algum valor nessa variavel.

Assim,

clsDados objDados = new clsDados();
  
if (objDados.getIdTable != null){
      //se for diferente de null então posso editar
}else{
     //se não tem, então é cadastro
}

vc pode colocar essa verificação no construtor ou no evento de "aparecer form"...

O grande segredo esta na visibilidade da variavel e tambem na função static dela.
visibilidade public -> visivel em qlqr parte da aplicação
static -> indica que o valor não vai ser zerado quando for usado nas classes;

Criado 23 de novembro de 2012
Ultima resposta 23 de nov. de 2012
Respostas 3
Participantes 2