Alterar Registros numa JTable atraves de Banco de Dados

Boa noite, estou com um problema, tenho uma aplicação na qual faz chamada a um banco de dados Postgres

mas na hora que eu seleciono uma linha da tabela pra alterar abre uma janela com o campo que eu quero alterar, mas quando eu altero e clico em inserir ele altera, mas também cria um novo registro, ou seja, cria 2 registros iguais

para exemplificar melhor postarei as imagens e o código:

http://img139.imageshack.us/img139/2867/tela1.jpg
http://img139.imageshack.us/img139/2083/tela2.jpg

O problema é que eu sei como fazer alterar sem aparecer 2 vezes só que se eu faço isso dai na hora que eu quero inserir algum nome novo dá erro pois executo o comando UPDATE do postgres…

Bom, vou passar o código para entenderem melhor

[code]private void buInserirActionPerformed(java.awt.event.ActionEvent evt) {
try {

    if(txNome.getText().isEmpty())
    {
        Avisos.Aviso("Insira um nome válido!");
        System.out.println(txNome.getText());
    }
    else{

           Statement st = conexao.createStatement();
           st.execute("Insert into Medicos(Nome) values(' " + txNome.getText() + "');");
           Avisos.Aviso("Cadastro Realizado com Sucesso!");
           dispose();
    }
    } catch (Exception e) {
          Avisos.Aviso("Erro ao Realizar o Cadastro!" + e);
      }


      try {
            Statement st = conexao.createStatement();
            st.executeUpdate("UPDATE Medicos set Nome = ' " + txNome.getText() + "' Where cod_med = " + txCodigo.getText());
            Avisos.Aviso("Cadastro Alterado com Sucesso!");
            dispose();
        } catch (Exception e) {
            Avisos.Aviso("Erro ao Realizar a Alteração!" + e);
        }

   
    

}       [/code]            

Vejam bem, eu sei que está errado fazendo essas 2 consultas mas se eu tiro a do INSERT eu não consigo incluir um novo Medico e se eu tiro a do UPDATE eu não consigo alterar algum registro, e se eu deixo as 2 ele altera mas cria de novo o mesmo campo, alguem pode me dar uma dica de como resolver isso ?

Obrigado.

Seu moço, se entendi bem vc está literalmente misturando as coisas.

Vc construiu um único método para fazer tudo, ai fica um mais confuso.

Tente montar um método apenas para inclusão e outro apenas para alteração, logo depois faça com que a tela “MEDICOS” seja esperta o suficiente para saber se será feita uma inclusão ou uma alteração; e ainda nesta mesma tela coloque apenas os botões “Confirmar” e “Fechar”, pois quando o botão “Confirmar” for acionado deverá ser feita a verificação da ação escolhida na tela anterior “CADASTRO” para executar o método correto (o de alteração ou o de inclusão).

Esta é a uma direção, espero ter amenizado seu tormento.

flws

Eu ja tinha criado 2 métodos um para Alterar e outro para Incluir, o problema é que os 2 chamam a mesma classe

jdMedicos que é o Jdialog que contem o botão Incluir , Mostrar Todos e Fechar…o problema é justamente esse…

fazer com que quando eu clique no Alterar da classe jdTabelaMedicos a classe jdMedicos que é chamada entenda que

só será feita uma alteração e não uma nova inserção, do mesmo modo que quando eu clicar em INCLUIR na

jdTabelaMedicos a classe jdMedicos entenda que é só para inserir novos dados.

vou passar o código das 2 classes pra ver se ajuda na compreensão.

[list]JDTABELAMEDICOS[/list]

[code]/*

  • jdTabelaMedicos.java
  • Created on 04/05/2009, 09:12:51
    */

package Clinica;

import java.sql.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
*

  • @author Fajohann
    */
    public class jdTabelaMedicos extends javax.swing.JDialog {

    private java.awt.Frame parent;
    private Connection conexao = null;

    /** Creates new form jdTabelaMedicos */
    public jdTabelaMedicos(Connection conexao,java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
    setTitle(“CADASTRO”);
    setSize(500,300);
    this.conexao = conexao;
    this.parent = parent;

     buAtualizarActionPerformed(null);
    

    }
    @SuppressWarnings(“unchecked”)
    //
    private void initComponents() {

     paTopo = new javax.swing.JPanel();
     laInfo = new javax.swing.JLabel();
     paBotoes = new javax.swing.JPanel();
     paManutencao = new javax.swing.JPanel();
     paBotoesManut = new javax.swing.JPanel();
     buIncluir = new javax.swing.JButton();
     buAlterar = new javax.swing.JButton();
     buExcluir = new javax.swing.JButton();
     buAtualizar = new javax.swing.JButton();
     paInferior = new javax.swing.JPanel();
     buFechar = new javax.swing.JButton();
     spDados = new javax.swing.JScrollPane();
     tbTabel = new javax.swing.JTable();
     paEsquerda = new javax.swing.JPanel();
    
     setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
     setTitle("SISMED v1.5");
     setResizable(false);
    
     paTopo.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
    
     laInfo.setText("Cadastro de Medicos :");
     paTopo.add(laInfo);
    
     getContentPane().add(paTopo, java.awt.BorderLayout.PAGE_START);
    
     paBotoes.setLayout(new java.awt.BorderLayout());
    
     paManutencao.setLayout(new java.awt.BorderLayout());
    
     paBotoesManut.setLayout(new java.awt.GridLayout(1, 0, 3, 0));
    
     buIncluir.setText("Incluir");
     buIncluir.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             buIncluirActionPerformed(evt);
         }
     });
     paBotoesManut.add(buIncluir);
    
     buAlterar.setText("Alterar");
     buAlterar.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             buAlterarActionPerformed(evt);
         }
     });
     paBotoesManut.add(buAlterar);
    
     buExcluir.setText("Excluir");
     buExcluir.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             buExcluirActionPerformed(evt);
         }
     });
     paBotoesManut.add(buExcluir);
    
     buAtualizar.setText("Atualizar");
     buAtualizar.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             buAtualizarActionPerformed(evt);
         }
     });
     paBotoesManut.add(buAtualizar);
    
     paManutencao.add(paBotoesManut, java.awt.BorderLayout.CENTER);
    
     paBotoes.add(paManutencao, java.awt.BorderLayout.PAGE_START);
    
     paInferior.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
    
     buFechar.setText("Fechar");
     buFechar.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             buFecharActionPerformed(evt);
         }
     });
     paInferior.add(buFechar);
    
     paBotoes.add(paInferior, java.awt.BorderLayout.PAGE_END);
    
     getContentPane().add(paBotoes, java.awt.BorderLayout.PAGE_END);
    
     tbTabel.setModel(new javax.swing.table.DefaultTableModel(
         new Object [][] {
             {null, null},
             {null, null},
             {null, null},
             {null, null}
         },
         new String [] {
             "Codigo", "Nome"
         }
     ) {
         boolean[] canEdit = new boolean [] {
             false, false
         };
    
         public boolean isCellEditable(int rowIndex, int columnIndex) {
             return canEdit [columnIndex];
         }
     });
     spDados.setViewportView(tbTabel);
    
     getContentPane().add(spDados, java.awt.BorderLayout.CENTER);
    
     paEsquerda.setLayout(new java.awt.GridLayout(10, 0));
     getContentPane().add(paEsquerda, java.awt.BorderLayout.LINE_START);
    
     pack();
    

    }//

    private void buAtualizarActionPerformed(java.awt.event.ActionEvent evt) {

     Vector cabecalho = new Vector();
     cabecalho.addElement("Codigo");
     cabecalho.addElement("Nome");
     Vector linhas = new Vector();
    
     try {
         Statement st = conexao.createStatement();
         ResultSet rs = st.executeQuery("Select * From Medicos ORDER BY cod_med ;");
    
         while (rs.next()) {
             Vector colunas = new Vector();
             colunas.addElement(rs.getString("Cod_med"));
             colunas.addElement(rs.getString("Nome"));
             linhas.add(new Vector(colunas));
         }
         } catch (Exception e) { System.out.println("FIZ ERRADO");
     }
    
    tbTabel.setModel(new DefaultTableModel(linhas, cabecalho));
    

    }

    private void buIncluirActionPerformed(java.awt.event.ActionEvent evt) {

     new jdMedicos (conexao, parent, true,true).setVisible(true);
     
     buAtualizarActionPerformed(null);
    

    }

    private void buFecharActionPerformed(java.awt.event.ActionEvent evt) {
    dispose();
    }

    private void buExcluirActionPerformed(java.awt.event.ActionEvent evt) {
    if (tbTabel.getSelectedRow() == -1) {
    Avisos.Aviso(“Não Existe Registro Selecionado para Excluir!”);
    } else {

         if (Avisos.Confirma("Deseja Excluir o Registro")) {
             String codigo = (String) tbTabel.getValueAt(tbTabel.getSelectedRow(), tbTabel.getSelectedColumn());
             System.out.println("exluiu código ->" + codigo);
    
             try {
                 Statement st = conexao.createStatement();
                 st.execute(
                         "Delete From Medicos " +
                         "Where cod_med = " + codigo + " OR nome = '" + codigo + "';" );
    
                 System.out.println("Excluido");
                 buAtualizarActionPerformed(null);
             } catch (Exception e) {System.out.println("OPS");
               
             }
         }
     }
    

    }

    private void buAlterarActionPerformed(java.awt.event.ActionEvent evt) {
    if (tbTabel.getSelectedRow() == -1) {
    Avisos.Aviso(“Não Existe Registro Selecionado para Alterar!”);
    } else {

         String codigo = (String) tbTabel.getValueAt(tbTabel.getSelectedRow(),tbTabel.getSelectedColumn());
         System.out.println(codigo);
         try {
             Statement st = conexao.createStatement();
             ResultSet rs = st.executeQuery(
                     "Select * From Medicos Where cod_med = " + codigo + " ;");
             jdMedicos med =
                     new jdMedicos(conexao, parent, true, false);
             if (rs.next()) {
                 med.CarregaCampos(rs);
             }
             med.setVisible(true);
             buAtualizarActionPerformed(null);
         } catch (Exception e) {
         }
     }
    

    }

    // Variables declaration - do not modify
    private javax.swing.JButton buAlterar;
    private javax.swing.JButton buAtualizar;
    private javax.swing.JButton buExcluir;
    private javax.swing.JButton buFechar;
    private javax.swing.JButton buIncluir;
    private javax.swing.JLabel laInfo;
    private javax.swing.JPanel paBotoes;
    private javax.swing.JPanel paBotoesManut;
    private javax.swing.JPanel paEsquerda;
    private javax.swing.JPanel paInferior;
    private javax.swing.JPanel paManutencao;
    private javax.swing.JPanel paTopo;
    private javax.swing.JScrollPane spDados;
    private javax.swing.JTable tbTabel;
    // End of variables declaration

}
[/code]

[list]jdMedicos[/list]

/*
 * jdTabelaMedicos.java
 *
 * Created on 30/04/2009, 16:48:24
 */

package Clinica;




import java.sql.*;

/**
 *
 * @author Fajohann
 */
public class jdMedicos extends javax.swing.JDialog  {

    private java.awt.Frame parent;
    private Connection conexao = null;
    private String codigo;

   
    
   
    public jdMedicos(Connection conexao,java.awt.Frame parent, boolean modal,boolean incluir) {
        super(parent, modal);
        this.conexao = conexao;
        initComponents();


        txCodigo.setEditable(incluir);

        if (incluir) {

            txCodigo.requestFocus();
           
        } else {
            txNome.requestFocus();
        }
        
        
    }
    public void CarregaCampos(ResultSet rs) {
        try {
            txCodigo.setText(rs.getString("cod_med"));
            txNome.setText(rs.getString("Nome"));
            System.out.println("ps");

        } catch (Exception e) {
        }
    }


    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        paEsquerda = new javax.swing.JPanel();
        laCodigo = new javax.swing.JLabel();
        laNome = new javax.swing.JLabel();
        paInferior = new javax.swing.JPanel();
        buInserir = new javax.swing.JButton();
        buMostrar = new javax.swing.JButton();
        buFechar = new javax.swing.JButton();
        paDireita = new javax.swing.JPanel();
        paSuperior = new javax.swing.JPanel();
        laInfo = new javax.swing.JLabel();
        paCentro = new javax.swing.JPanel();
        txCodigo = new javax.swing.JTextField();
        txNome = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("MEDICOS");
        setResizable(false);

        paEsquerda.setLayout(new java.awt.GridLayout(2, 0, 0, 10));

        laCodigo.setText("    Codigo");
        paEsquerda.add(laCodigo);

        laNome.setText("    Nome    ");
        paEsquerda.add(laNome);

        getContentPane().add(paEsquerda, java.awt.BorderLayout.LINE_START);

        paInferior.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 25));

        buInserir.setText("INSERIR");
        buInserir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buInserirActionPerformed(evt);
            }
        });
        paInferior.add(buInserir);

        buMostrar.setText("MOSTRAR TODOS");
        buMostrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buMostrarActionPerformed(evt);
            }
        });
        paInferior.add(buMostrar);

        buFechar.setText("FECHAR");
        buFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buFecharActionPerformed(evt);
            }
        });
        paInferior.add(buFechar);

        getContentPane().add(paInferior, java.awt.BorderLayout.PAGE_END);
        getContentPane().add(paDireita, java.awt.BorderLayout.LINE_END);

        paSuperior.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 10));

        laInfo.setText("Informações do Cadastro :");
        paSuperior.add(laInfo);

        getContentPane().add(paSuperior, java.awt.BorderLayout.PAGE_START);

        paCentro.setLayout(new java.awt.GridLayout(2, 0, 0, 10));

        txCodigo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txCodigoActionPerformed(evt);
            }
        });
        paCentro.add(txCodigo);

        txNome.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txNomeActionPerformed(evt);
            }
        });
        paCentro.add(txNome);

        getContentPane().add(paCentro, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>                        

    private void buInserirActionPerformed(java.awt.event.ActionEvent evt) {                                          
try {
        
        if(txNome.getText().isEmpty())
        {
            Avisos.Aviso("Insira um nome válido!");
            System.out.println(txNome.getText());
        }
        else{

               Statement st = conexao.createStatement();
               st.execute("Insert into Medicos(Nome) values(' " + txNome.getText() + "');");
               Avisos.Aviso("Cadastro Realizado com Sucesso!");
               dispose();
        }
        } catch (Exception e) {
              Avisos.Aviso("Erro ao Realizar o Cadastro!" + e);
          }


          try {
                Statement st = conexao.createStatement();
                st.executeUpdate("UPDATE Medicos set Nome = ' " + txNome.getText() + "' Where cod_med = " + txCodigo.getText());
                Avisos.Aviso("Cadastro Alterado com Sucesso!");
                dispose();
            } catch (Exception e) {
                Avisos.Aviso("Erro ao Realizar a Alteração!" + e);
            }

       
        

    }                                         

    private void buFecharActionPerformed(java.awt.event.ActionEvent evt) {                                         
       dispose();
    }                                        

    private void buMostrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         new jdTabelaMedicos(conexao,parent,true).setVisible(true);

    }                                         

     
    // Variables declaration - do not modify                     
    private javax.swing.JButton buFechar;
    private javax.swing.JButton buInserir;
    private javax.swing.JButton buMostrar;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JLabel laCodigo;
    private javax.swing.JLabel laInfo;
    private javax.swing.JLabel laNome;
    private javax.swing.JPanel paCentro;
    private javax.swing.JPanel paDireita;
    private javax.swing.JPanel paEsquerda;
    private javax.swing.JPanel paInferior;
    private javax.swing.JPanel paSuperior;
    private javax.swing.JTextField txCodigo;
    private javax.swing.JTextField txNome;
    // End of variables declaration                   

}

Fala fajohann,

Vamos tentar esta idéia aqui e vamos ver no que dá.

NA tabela de médicos, classe jdTabelaMedicos fassa o seguinte:

  1. Construir um método para incluir.

[code]private executarInclusao(String codigo, String nome) {
// Colocar o código para INCLUSAO aqui.
}

private executarAlteracao(String codigo, String nome) {
// Colocar o código para ALTERACAO AQUI.
}
[/code]
2) Ajustar os eventos.

[code]private void buIncluirActionPerformed(java.awt.event.ActionEvent evt) {

     jdMedicos medicosView = new jdMedicos (parent, true,true).setVisible(true);  
     
 if( medicosView.confirmou() ) {
        String codigo = medicosView.getCodigo();
        String nome = medicosView.getNome();

        this.executarInclusao(codigo, nome);
     }

}

private void buAlterarActionPerformed(java.awt.event.ActionEvent evt) {

     String codigo = // <-- Obter o codigo na grid.
     String nome = // <-- Obter o nome na grid. 
      
     // NOTE A ALTERAÇÃO NO CONSTRUTOR ( vc pode resolver com set tambem )
     jdMedicos medicosView = new jdMedicos (codigo, nome, parent, true,true).setVisible(true);  
     
 if( medicosView.confirmou() ) {
        codigo = medicosView.getCodigo();
        nome = medicosView.getNome();

        this.executarAlteracao(codigo, nome);
     }

}

[/code]
No formulário de médico, classe jdMedicos.

  1. Criar atributos.

private String codigo = ""; private String nome = ""; private boolean confirmou = false;

  1. Modificar construtor.

de:

para:

Porque vc estará INCLUINDO quando utilizar este construtor

  1. Incluir construtor

public jdMedicos(String codigo, String nome,java.awt.Frame parent, boolean modal,boolean incluir) { this.codigo = codigo; this.nome = nome; }

Porque vc estará ALTERANDO quando utilizar este construtor.

  1. Incluir os seguintes métodos.

public String getCodigo(){ ... } public String getNome() { ... } public boolean confirmou() { ... }

  1. No evento do botão “Confirmar” fazer o seguinte:

buConfirmar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { confirmou = true; } });

  1. No evento do botão “cancelar” fazer o seguinte:

buCancelar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { confirmou = false; } });

É isso ai, a idéia é separar e organizar um pouco o sistema. Algumas coisas vc terá que retirar e outras deixar, portando bastante atenção ao fazer os ajustes caso vc opte for seguir este caminho; faça um backup antes (mantenha as portas abertas para algum plano B).

P.S As sugestões acima tem a simples intenção de apresentar uma alternativa para o algoritmo da implementação do problema, portanto vários detalhes foram omitidos em prol da clareza e objetividade.

flws

Cara, fiz o que vc falou mas não deu certo :? vou te passar como ficou o código pra vc ver se tá tudo certo

[list]na classe jdTabelaMedicos[/list]

Criei os 2 métodos pra Incluir e para Alterar :

[code]private void executarInclusao(String codigo, String nome)
{
try {
if(nome.isEmpty())
{
Avisos.Aviso(“Insira um nome válido!”);
System.out.println(nome);
}
else{
Statement st = conexao.createStatement();
st.execute("Insert into Medicos(Nome) values(’ " + nome + “’);”);
Avisos.Aviso(“Cadastro Realizado com Sucesso!”);
dispose();
}
} catch (Exception e){
Avisos.Aviso(“Erro ao Realizar o Cadastro!”);
}
buAtualizarActionPerformed(null);
}

private void executarAlteracao(String codigo, String nome)
{
  try {
      if(nome.isEmpty()){
        Avisos.Aviso("Insira um nome válido!");
        System.out.println(nome);
      }
      else{
            Statement st = conexao.createStatement();
            st.executeUpdate("UPDATE Medicos set Nome = ' " + nome + "' Where cod_med = " + codigo);
            Avisos.Aviso("Cadastro Alterado com Sucesso!");
            dispose();
      }
  }   catch (Exception e){
            Avisos.Aviso("Erro ao Realizar a Alteração!" + e);
      }
      buAtualizarActionPerformed(null);
}[/code]

Logo após nos botoes para Inserir e Alterar fiz assim :

[code]private void buIncluirActionPerformed(java.awt.event.ActionEvent evt) {
jdMedicos med = new jdMedicos(parent, true,true);
med.setVisible(true);

     if( med.confirmou() ) {
        codigo = med.getCodigo();
        nome = med.getNome();
        this.executarInclusao(codigo, nome);
     }
     
}                  

private void buAlterarActionPerformed(java.awt.event.ActionEvent evt) {

  for (int i = 0; i < tbTabel.getColumnCount(); i++) {
            if (tbTabel.getColumnName(i).equals("Codigo")) {
                codigo = (String) tbTabel.getValueAt(tbTabel.getSelectedRow(), i);
                nome = (String) tbTabel.getValueAt(tbTabel.getSelectedRow(),i+1);
                System.out.println(codigo);
                System.out.println(nome);
                break;
            }
  }
        // NOTE A ALTERAÇÃO NO CONSTRUTOR ( vc pode resolver com set tambem )
  jdMedicos medView = new jdMedicos (codigo, nome,parent, true,false);
  medView.setVisible(true);
  if( medView.confirmou() ) {
        codigo =  medView.getCodigo();
        nome = medView.getNome();

        this.executarAlteracao(codigo, nome);
        buAtualizarActionPerformed(null);
     }

}[/code]

[list]E na classe jdMedicos :[/list]

[code]
public class jdMedicos extends javax.swing.JDialog {

private java.awt.Frame parent;
private Connection conexao = null;
private String codigo = "";
private String nome = "";
private boolean confirmou = false;

//PARA ALTERAR
public jdMedicos(java.awt.Frame parent, boolean modal,boolean incluir) {
    super(parent, modal);
    this.parent = parent;
    initComponents();
    txCodigo.setEditable(incluir);
    if (incluir) {
        txCodigo.requestFocus();
    } else {
        txNome.requestFocus();
    }
}

//PARA INCLUIR
public jdMedicos(String codigo, String nome,java.awt.Frame parent, boolean modal,boolean incluir)
{
    this.codigo = codigo;
    this.nome = nome;
}

public String getCodigo(){
     return(codigo);
}

public String getNome(){
    return(nome);
}

public boolean confirmou(){
    return(confirmou);
}[/code]

[list]

Aqui foi o unico método que eu não entendi o que deveria fazer :[/list]

[code]private void buInserirActionPerformed(java.awt.event.ActionEvent evt) {

    // Aqui não deu certo e não entendi esse método
    
    buInserir.addActionListener(new java.awt.event.ActionListener() {  
    public void actionPerformed(java.awt.event.ActionEvent evt) {  
     confirmou = true;

}
});[/code]

após digitar os dados no campo nome e clicar em INSERIR não acontece nada…
Voce sabe porque deu isso ? Não entendi a sua implementação nesse método buInserirActionPerformed();

O método que vc não entendeu é o evento do formulário de edição do código e nome; como percebi outros problemas no seu código resolvi montar um exemplo (funcionando) a partir do seu código para que vc possa estuda-lo e verificar alguns pontos chaves.

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class jdMedicos extends javax.swing.JDialog  {

    private java.awt.Frame parent;
    private boolean confirmou = false;
    
    private JLabel lbCodigo = null;
    private JLabel lbNome = null;
    
    private JTextField txCodigo = null;
    private JTextField txNome = null;
    
    private JButton buConfirmar = null;
    private JButton buCancelar = null;
    
    // PARA INCLUIR
    public jdMedicos(java.awt.Frame parent, boolean modal) {
    	super(parent);
        super.setModal(modal);
        
        initComponents();
        
        this.parent = parent;

        txCodigo.setEditable(true);
        txCodigo.requestFocus();
        
    	super.setVisible(true);
    }

    // PARA ALTERAR
    public jdMedicos(java.awt.Frame parent, String codigo, String nome, boolean modal) {
    	super(parent);
        super.setModal(modal);
        
        initComponents();
    	
        txCodigo.setEditable(false);
        txNome.requestFocus();
        
        this.txCodigo.setText(codigo);
        this.txNome.setText(nome);
    	
    	super.setVisible(true);
    }
    
    private void initComponents() {
    	lbCodigo = new JLabel("Codigo: ", JLabel.RIGHT);
    	lbNome = new JLabel("Nome: ", JLabel.RIGHT);
    	
    	txCodigo = new JTextField();
    	txNome = new JTextField();
    	
    	buConfirmar = new JButton("Confirmar");
    	buCancelar = new JButton("Cancelar");
    	
    	JPanel form = new JPanel(new GridLayout(2,2));
    	JPanel options = new JPanel(new FlowLayout());
    	
    	form.add(lbCodigo);
    	form.add(txCodigo);
    	
    	form.add(lbNome);
    	form.add(txNome);
    	
    	options.add(buConfirmar);
    	options.add(buCancelar);
    	
    	super.getContentPane().add(form, BorderLayout.CENTER);
    	super.getContentPane().add(options, BorderLayout.SOUTH);
    	
    	super.setSize(300, 200);
    	super.setLocationRelativeTo(null);
    	
    	this.buConfirmar.addActionListener(new ActionListener() {    // <----<< VC SE CONFUNDIU AO MONTAR ESTE MÉTODO

			public void actionPerformed(ActionEvent arg0) {
				confirmou = true;
				setVisible(false);
			}
    		
    	});
    	
    	this.buCancelar.addActionListener(new ActionListener() {  // <----<< VC SE CONFUNDIU AO MONTAR ESTE MÉTODO

			public void actionPerformed(ActionEvent arg0) {
				confirmou = false;
				setVisible(false);
			}
    		
    	});
    	
    	super.pack();
    }

    public String getCodigo(){
         return(txCodigo.getText());
    }

    public String getNome(){
        return(txNome.getText());
    }

    public boolean confirmou(){
        return(confirmou);
    }
    
    public static void main(String[] args) {
    	// --- LIBERE ESTA LINHA E ANULE AS 3 PRÓXIMAS PARA INCLUSÃO
    	//jdMedicos m = new jdMedicos(null, true);
    	
    	// --- LIBERE AS PRÓXIMAS 3 LINHAS  E ANULE A ANTERIOR PARA ALTERAÇÃO
    	String codigo = "001";
    	String nome = "MARIA";
    	jdMedicos m = new jdMedicos(null,codigo, nome, true);
    	
    	System.out.println("-----------------------------------");
    	
    	if(m.confirmou()) {
    		System.out.println(">>> O USUARIO CONFIRMOU OS DADOS <<<\n");
    		System.out.println("CODIGO DIGITADO : "+m.getCodigo());
    		System.out.println("NOME DIGITADO : "+m.getNome());
    	} else {
    		System.out.println(">>> O USUARIO NÃO CONFIRMOU OS DADOS <<<");    		
    	}
    	
    	System.out.println("-----------------------------------");
    	
    	System.exit(0);
    }
}

P.S Construi o código “na mão”, não usei recursos do NetBeans e nem do Eclipse; talvez fosse uma boa idéia vc tentar fazer isso para entender melhor como funciona a API Java.

flws

Cara, muito obrigado, após alguns ajustes no meu código funcionou certinho a inclusão e a alteração :slight_smile:

o único problema que deu foi que quando eu boto pra alterar a txCodigo deveria ficar sem poder alterar o campo

com o comando e dando o foco no nome

txCodigo.setEditable(incluir); txNome.requestFocus();

só que ao inserir esse código no meu construtor, quando clico no botão alterar, simplesmente não acontece nada, não abre a jdMedicos nem nada, vc sabe porque isso acontece ?

Opa, consegui resolver, agora está tudo funcionando certinho !!

Valeu Fantomas, muito obrigado !

Beleza!

Bem vindo ao forum.

:smiley: