(RESOLVIDO) JDialog Travando JFrame ao Fechar - Ajuda

Bom Dia Galera,

estou realizando um Software de Controle de Obrigações para um Escritorio de Contabilidade.

Em um “JFrame”, tenho um “JPanel” que exibo a Tabela dos Clientes. Quando o usuario seleciona uma linha e clica em editar, eu instancio um JDialog chamado “Cliente” e defino setVisible(true), setModal(true). No momento que realizo as edições no JDialog que clico no Butão Editar, ele realiza as alterações e executa o comando dispose() normalmente, o problema é que ele fecha, e tambem trava o meu JFrame.

Alguem sabe o motivo deste problema?

Se for necessario mais informações, só avisar.

Obrigado!

poe o fonte pra ver se tem algo errado. muito estranho esse problema seu.

Tópico movido para o fórum de interface gráfica.

To no trabalho, e to sem o Código fonte aqui.

Mais tipo, quando instancio o JDialog, eu to chamando ele usando (this, false).

Tem alguma coisa haver?

Poderia me explicar o que são esses parametros “this” e “false”. Pelo que li o false vai dizer se é modal ou não. To errado?

Boa tarde MarcioMaia.

To no trabalho, e to sem o Código fonte aqui.

Mais tipo, quando instancio o JDialog, eu to chamando ele usando (this, false).

Tem alguma coisa haver?

Poderia me explicar o que são esses parametros “this” e “false”. Pelo que li o false vai dizer se é modal ou não. To errado?[/quote]

Sim, tem tudo haver.

Um dos modos que se podem instanciar um JDialog e passando os seguintes parâmetros:

    meuJDialog(Frame Owner, boolean modal);

Isto significa dizer que o primeiro parâmetro indica o frame proprietário do JDialog, neste caso, voce está passando a cláusula implícita “this” que indica que o prorpietário do JDialog será o Frame ou JFrame de onde voce está abrindo e o segundo parâmetro que é booleano, indica se ele será Modal ou não, no seu caso, voce o está abrindo de forma não modal, isto significa dizer que ele não bloqueará o foco no JDialog enquanto estiver aberto.

Não se porque ele está travando o Frame de onde você o abriu, contudo dentro do frame ou JFrame que você o abriu, após ele fechar, atribua um valor “null” para sua referência na instrução logo abaixo de sua abertura (Instância), mais ou menos assim:

   // FrameLogin é um classe que estende (herda) JDialog.
   FrameLogin login = new FrameLogin(this, true);
   login.dispose();
   login = null;


   // No construtor do FrameLogin
   public FrameLogin(Frame parent, boolean modal){
         super(parent, modal);
   }

Um abraço.

[quote=discorpio]Boa tarde MarcioMaia.

To no trabalho, e to sem o Código fonte aqui.

Mais tipo, quando instancio o JDialog, eu to chamando ele usando (this, false).

Tem alguma coisa haver?

Poderia me explicar o que são esses parametros “this” e “false”. Pelo que li o false vai dizer se é modal ou não. To errado?[/quote]

Sim, tem tudo haver.

Um dos modos que se podem instanciar um JDialog e passando os seguintes parâmetros:

    meuJDialog(Frame Owner, boolean modal);

Isto significa dizer que o primeiro parâmetro indica o frame proprietário do JDialog, neste caso, voce está passando a cláusula implícita “this” que indica que o prorpietário do JDialog será o Frame ou JFrame de onde voce está abrindo e o segundo parâmetro que é booleano, indica se ele será Modal ou não, no seu caso, voce o está abrindo de forma não modal, isto significa dizer que ele não bloqueará o foco no JDialog enquanto estiver aberto.

Não se porque porque ele está travando o Frame de onde você o abriu, contudo dentro do frame ou JFrame que você o abriu, após ele fechar, atribua um valor “null” para sua referência na instrução logo abaixo de sua abertura (Instância), mais ou menos assim:

   // FrameLogin é um classe que estende (herda) JDialog.
   FrameLogin login = new FrameLogin(this, true);
   login.dispose();
   login = null;


   // No construtor do FrameLogin
   public FrameLogin(Frame parent, boolean modal){
         super(parent, modal);
   }

Um abraço. [/quote]

Obrigado por seus comentarios.

Estou instanciando o Jdialog da seguinte forma:

Cliente cliente = new Cliente(this, false);
cliente.setVisible(true);
cliete.setModal(true);//Como o segundo parametro do contrutor jdialog diz se ele vai ser modal ou não, eu posso deletar esta linha do codigo?

E sobre setar como null, no caso, quando o usuario clicar em editar, la no final eu seto dispose() para fechar o Jdialog, eu tenho que:
Instanciar novamente, e setar como null?

A parte dos parametros entendi perfeitamente, agora sobre setar null não entendi muito bem.

Meu problema, é que quando eu realizo as alterações necessarios, eu dou dispose() e o Jdialog fecha, travando assim o meu Jframe.

Como não estou em casa, estou sem o codigo fonte aqui para postar, mais assim que chegar posto para ver uma possivel ajuda.

Olá Marcio.

Você confundiu tudo.

Não é setar um parâmetro do JDialog com “null” e sim atribuir o valor “null” a sua instância logo após ele ser fechado.

O que pode estar acontecendo com a sua aplicação é que o JDialog, momentos antes de fechar, esteja realizando algum procedimento de gravação no banco de dados do Cliente, e que esteja levando algum tempo para realizar isto, e talvez você deve estar clicando no fechamento do JDialog antes mesmo dele terminar esta operação.

Antes de fechar o seu JDialog, verifique se a gravação do registro foi terminada, criando implementação dentro do próprio JDialog reescrevendo o método dispose() do JDialog.

Um abraço

[quote=discorpio]Olá Marcio.

Você confundiu tudo.

Não é setar um parâmetro do JDialog com “null” e sim atribuir o valor “null” a sua instância logo após ele ser fechado.

O que pode estar acontecendo com a sua aplicação é que o JDialog, momentos antes de fechar, esteja realizando algum procedimento de gravação no banco de dados do Cliente, e que esteja levando algum tempo para realizar isto, e talvez você deve estar clicando no fechamento do JDialog antes mesmo dele terminar esta operação.

Antes de fechar o seu JDialog, verifique se a gravação do registro foi terminada, criando implementação dentro do próprio JDialog reescrevendo o método dispose() do JDialog.

Um abraço[/quote]

discorpio, obrigado novamente por seus comentarios.

Realmente estou realizando varias alterações no banco de dados momentos antes de eu da dispose() no meu JDialog.

Irei testar se depois de algum tempo o JFrame destrava.

Agradeço por sua ajuda, assim que chegar em casa irei realizar os testes e posto aqui novamente.

[quote=discorpio]Olá Marcio.

Você confundiu tudo.

Não é setar um parâmetro do JDialog com “null” e sim atribuir o valor “null” a sua instância logo após ele ser fechado.

O que pode estar acontecendo com a sua aplicação é que o JDialog, momentos antes de fechar, esteja realizando algum procedimento de gravação no banco de dados do Cliente, e que esteja levando algum tempo para realizar isto, e talvez você deve estar clicando no fechamento do JDialog antes mesmo dele terminar esta operação.

Antes de fechar o seu JDialog, verifique se a gravação do registro foi terminada, criando implementação dentro do próprio JDialog reescrevendo o método dispose() do JDialog.

Um abraço[/quote]

discorpio esta aqui o evento que chama o jdialog

int linha = SimpleTableModel.tabelaCliente.getSelectedRow();
if(linha == -1){
    JOptionPane.showMessageDialog(null, "Nenhum Cliente selecionado.","Editar Cadastro Cliente",JOptionPane.INFORMATION_MESSAGE);
}else{
    Object id = SimpleTableModel.tabelaCliente.getValueAt(linha, 0);
    String Sid = String.valueOf(id); cdc_id = Integer.parseInt(Sid);
    Cadastrar_Cliente editar_cliente = new Cadastrar_Cliente(this, false);//Se eu setar aqui como true, ele não preenche os meus JText no JDialog.
    editar_cliente.setVisible(true);
    editar_cliente.setModal(true);
    Cadastrar_Cliente.preencherJpaneCDClEditar(cdc_id);
    Cadastrar_Cliente.JB_EDITAR_CADASTRO_CDC_.setEnabled(true);Cadastrar_Cliente.JB_GRAVAR_CDC_.setEnabled(false);
    
}

Metodo que preencher os JTexts.

public static void preencherJpaneCDClEditar(Integer id_edicao){
        try {
            JT_CEP_CDC_.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("#####-###")));
            JT_TEL_CDC_.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("(##)####-####")));
        } catch (ParseException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        Conexao.executeSQL("SELECT * FROM cdc WHERE cdc_id = '"+id_edicao+"'");
        try {
            while(Conexao.rs.next()){
                JT_NOME_RAZAO_CLIENTE_.setText(String.valueOf(Conexao.rs.getObject("cdc_nome_razao")));
                JT_NOME_FANTASIA_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_nome_fantasia")));
                JCOMBO_CPF_CNPJ_CDC_.setSelectedItem(Conexao.rs.getObject("cdc_tipo_documento"));
                JT_CPF_CNPJ_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_cpf_cnpj")));
                JT_ENDERECO_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_endereco")));
                JT_NUMERO_CDC.setText(String.valueOf(Conexao.rs.getObject("cdc_numero")));
                JT_BAIRRO_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_bairro")));
                JT_COMPLEMENTO_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_complemento")));
                JT_CEP_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_cep")));
                JCOMBO_UF_CDC_.setSelectedItem(Conexao.rs.getObject("cdc_uf"));
                JT_MUNICIPIO_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_municipio")));
                JT_TEL_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_telefone")));
                JT_FAX_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_fax")));
                JT_EMA_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_email")));
                JT_SIT_CDC_.setText(String.valueOf(Conexao.rs.getObject("cdc_site")));
                //***IMPOSTOS***
                String
                        iss = String.valueOf(Conexao.rs.getObject("cdc_iss")),
                        icms = String.valueOf(Conexao.rs.getObject("cdc_icms")), 
                        inss = String.valueOf(Conexao.rs.getObject("cdc_inss")), 
                        pis = String.valueOf(Conexao.rs.getObject("cdc_pis")), 
                        cofins = String.valueOf(Conexao.rs.getObject("cdc_cofins")), 
                        irpj = String.valueOf(Conexao.rs.getObject("cdc_irpj")), 
                        dctf = String.valueOf(Conexao.rs.getObject("cdc_dctf")), 
                        dief = String.valueOf(Conexao.rs.getObject("cdc_dief")), 
                        simples_nacional = String.valueOf(Conexao.rs.getObject("cdc_simples_nacional"));
                if("SIM".equals(iss)){JCheck_ISS_CDC.setSelected(true);}
                if("SIM".equals(icms)){JCheck_ICMS_CDC.setSelected(true);}
                if("SIM".equals(inss)){JCheck_INSS_CDC.setSelected(true);}
                if("SIM".equals(pis)){JCheck_PIS_CDC.setSelected(true);}
                if("SIM".equals(cofins)){JCheck_COFINS_CDC.setSelected(true);}
                if("SIM".equals(irpj)){JCheck_IRPJ_CDC4.setSelected(true);}
                if("SIM".equals(dctf)){JCheck_DCTF_CDC.setSelected(true);}
                if("SIM".equals(dief)){JCheck_DIEF_CDC.setSelected(true);}
                if("SIM".equals(simples_nacional)){JCheck_OPTSIMNAC_CDC_.setSelected(true);}
                
            }
        } catch (SQLException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Quando clico no botão salvar, ele gera o evento abaixo:

String iss, cofins, inss, pis, icms, irpj, dctf, dief, simples_nacional;
if (JCheck_COFINS_CDC.isSelected()){cofins = "SIM";}else{cofins = "NAO";}
if (JCheck_INSS_CDC.isSelected()){inss = "SIM";}else{inss = "NAO";}
if (JCheck_PIS_CDC.isSelected()){pis = "SIM";}else{pis = "NAO";}
if (JCheck_ISS_CDC.isSelected()){iss = "SIM";}else{iss = "NAO";}
if (JCheck_ICMS_CDC.isSelected()){icms = "SIM";}else{icms = "NAO";}
if (JCheck_IRPJ_CDC4.isSelected()){irpj = "SIM";}else{irpj = "NAO";}
if (JCheck_DCTF_CDC.isSelected()){dctf = "SIM";}else{dctf = "NAO";}
if (JCheck_DIEF_CDC.isSelected()){dief = "SIM";}else{dief = "NAO";}
if (JCheck_OPTSIMNAC_CDC_.isSelected()){simples_nacional = "SIM";}else{simples_nacional = "NAO";}
        
String CPF_CNPJ = JT_CPF_CNPJ_CDC_.getText().replace(".", ""); CPF_CNPJ = CPF_CNPJ.replace("-", "");CPF_CNPJ = CPF_CNPJ.replace("/", "");//Pegar campo CPF e CNPJ
String CEP = JT_CEP_CDC_.getText().replace("-", "");//Pegando a informação do campo CEP
String TELEFONE = JT_TEL_CDC_.getText().replace("-", ""); TELEFONE = TELEFONE.replace("(", "");TELEFONE = TELEFONE.replace(")", "");//Pegando a informação do campo TELEFONE.
Conexao.ExecuteUpdateSQL("UPDATE cdc SET cdc_nome_razao = '"+JT_NOME_RAZAO_CLIENTE_.getText()+"',"
        + "cdc_nome_fantasia = '"+JT_NOME_FANTASIA_CDC_.getText()+"',"
        + "cdc_tipo_documento = '"+JCOMBO_CPF_CNPJ_CDC_.getSelectedItem()+"',"
        + "cdc_cpf_cnpj = '"+CPF_CNPJ+"',"
        + "cdc_endereco = '"+JT_ENDERECO_CDC_.getText()+"',"
        + "cdc_numero = '"+JT_NUMERO_CDC.getText()+"',"
        + "cdc_bairro = '"+JT_BAIRRO_CDC_.getText()+"',"
        + "cdc_complemento = '"+JT_COMPLEMENTO_CDC_.getText()+"',"
        + "cdc_cep = '"+CEP+"',"
        + "cdc_uf = '"+JCOMBO_UF_CDC_.getSelectedItem()+"',"
        + "cdc_municipio = '"+JT_MUNICIPIO_CDC_.getText()+"',"
        + "cdc_telefone = '"+TELEFONE+"',"
        + "cdc_fax = '"+JT_FAX_CDC_.getText()+"',"
        + "cdc_email = '"+JT_EMA_CDC_.getText()+"',"
        + "cdc_site = '"+JT_SIT_CDC_.getText()+"',"
        + "cdc_iss = '"+iss+"',"
        + "cdc_icms = '"+icms+"',"
        + "cdc_inss = '"+inss+"',"
        + "cdc_pis = '"+pis+"',"
        + "cdc_cofins = '"+cofins+"',"
        + "cdc_irpj = '"+irpj+"',"
        + "cdc_dctf = '"+dctf+"',"
        + "cdc_dief = '"+dief+"',"
        + "cdc_simples_nacional = '"+simples_nacional+"' WHERE cdc_id = '"+TelaPrincipal.cdc_id+"' ");

if (Conexao.testeconexao == true){JOptionPane.showMessageDialog(null, "Alterações realizadas com Sucesso.!");}else{JOptionPane.showMessageDialog(null, "Alterações NÃO REALIZADAS.");}
SimpleTableModel.PreenchendoTabelaCliente();SimpleTableModel.tabelaCliente.updateUI();
dispose();

Agradeço a sua ajuda.

Bom dia Marcio.

Eu não entendi duas coisas no seu código:

1º) Por quê você declarou o método de preencher JPaneCDC1Editar com estático :?:

   ......
   public static void preencherJpaneCDClEditar(Integer id_edicao){
   ..... 

   // Deveria ser assim
   public void preencherJpaneCDClEditar(Integer id_edicao){

Talvez isto tenha influência nas exceções (erros) lançados na sua aplicação, veja bem, eu disse talvez, porém quando declaramos métodos estáticos é para uma necessidade de utilizarmos esse método sem instanciar o objeto que o contém, fazendo apenas referência com o nome da Classe JDialog seguida de um ponto e o nome do método. Ex.

    // Onde Cadastrar_Cliente é a classe e não a instância
    Cadastrar_Cliente.preencherJpaneCDClEditar(100);

Como você terá a necessidade de instanciar a classe Cliente, eis que você necessita mostrar a parte visual do seu Editor de Clientes, logo não há necessidade de declarar este método como estático, pois voce pode acessá-lo através de sua instância.

Temos que ter o cuidado de ficar declarando métodos estáticos (static) demais em nossa aplicação, pois os métodos estáticos são como métodos globais, que quando a aplicação se inicia, eles logo são armazenados em memória, independente da classe onde estão declarados, e é por isso que eles são considerados apenas métodos de classe e não de instância.

2º) Como assim se setar o parâmetro como true os JTextFields não preenchidos.

// Se eu setar aqui como true, ele não preenche os meus JText no JDialog.  
   Cadastrar_Cliente editar_cliente = new Cadastrar_Cliente(this, false);

// Para depois setá-lo como modal
    editar_cliente.setModal(true);

Tudo depende de como você implementou o construtor da classe Cadastrar_Cliente. Se o segundo parâmetro não estiver configurando como modal, então você deve invocar o seu método setModal(true), porém se estiver passando parâmetros, então por quê não passar também o parâmetro modal :?:

Talvez o que esteja travando o seu JFrame não seja o JDilog Cadastrar_Cliente, mas este código abaixo:

  SimpleTableModel.PreenchendoTabelaCliente();
  SimpleTableModel.tabelaCliente.updateUI();

Imagine se a sua tabela contiver 105.500 registros e esteja jogando tudo para dentro do seu JTable. Já imaginou :?: Não será apenas o registro que você inseriu ou editou ou será :?:

Melhor seria também se você colocasse aqui o código do construtor da classe JDialog Cadastrar_Cliente.

Um abraço

Bom, faz muito tempo que não me meto com JSE, mas, por que você não tenta criar uma nova thread para o JDialog?
Afinal, todos os componentes (e o que mais você criar) a partir de um JFrame irão compartilhar a mesma thread.
Abra o google chrome e o mozilla. Em cada um deles abra várias abas e, em cada um, as mesmas abas abertas do outro.
Abra o gerenciador de tarefas e analise qual consome mais recursos e qual divide os recursos em threads separadas.
Qual é mais lento?

Enfim, separando o processo do JDialog do principal, você ganha tempo e performance.

Já tentou usar um depurador no seu JFrame?

[quote]1º) Por quê você declarou o método de preencher JPaneCDC1Editar com estático

view plaincopy to clipboardprint?

public static void preencherJpaneCDClEditar(Integer id_edicao){

// Deveria ser assim
public void preencherJpaneCDClEditar(Integer id_edicao){

public static void preencherJpaneCDClEditar(Integer id_edicao){

// Deveria ser assim
public void preencherJpaneCDClEditar(Integer id_edicao){

Talvez isto tenha influência nas exceções (erros) lançados na sua aplicação, veja bem, eu disse talvez, porém quando declaramos métodos estáticos é para uma necessidade de utilizarmos esse método sem instanciar o objeto que o contém, fazendo apenas referência com o nome da Classe JDialog seguida de um ponto e o nome do método. Ex.

view plaincopy to clipboardprint?
// Onde Cadastrar_Cliente é a classe e não a instância
Cadastrar_Cliente.preencherJpaneCDClEditar(100);
// Onde Cadastrar_Cliente é a classe e não a instância
Cadastrar_Cliente.preencherJpaneCDClEditar(100);

Como você terá a necessidade de instanciar a classe Cliente, eis que você necessita mostrar a parte visual do seu Editor de Clientes, logo não há necessidade de declarar este método como estático, pois voce pode acessá-lo através de sua instância.

Temos que ter o cuidado de ficar declarando métodos estáticos (static) demais em nossa aplicação, pois os métodos estáticos são como métodos globais, que quando a aplicação se inicia, eles logo são armazenados em memória, independente da classe onde estão declarados, e é por isso que eles são considerados apenas métodos de classe e não de instância.
[/quote]

Boa Tarde Discorpion,

muito obrigado por seus comentarios.

Sou um tanto amador em Programação. Estou iniciando agora esta ardua carreira. Estou no 2º Semestre de Sistema da Informação, e comecei a estudar Java lendro o Livro da Deitel.

Em relação a declarar como Estático, eu não tinha o conhecimento sobre a utilização do mesmo, pois não sabia que poderia acessá-lo através da instância, só acessava pela Classe.

Mais entendi perfeitamente o que você mencionou. Obrigado!

[quote]2º) Como assim se setar o parâmetro como true os JTextFields não preenchidos.

view plaincopy to clipboardprint?
// Se eu setar aqui como true, ele não preenche os meus JText no JDialog.
Cadastrar_Cliente editar_cliente = new Cadastrar_Cliente(this, false);

// Para depois setá-lo como modal
editar_cliente.setModal(true);
[/quote]

Quando seto no JDialog Cadastrar_Cliente setModal = true, no momento que o meu JDialog é aberto, ele não preenche os JTexts existentes.
O metodo [Cadastrar_Cliente.preencherJpaneCDClEditar(cdc_id);] é responsavel por preencher os Meus JTexts que estão inseridos no meu JDialog.

Como estou no trabalho, não tenho como realizar os testes. Mais vou mudar o metodo para não estatico, e chamar pela instancia já criada.

[quote]Talvez o que esteja travando o seu JFrame não seja o JDilog Cadastrar_Cliente, mas este código abaixo:

view plaincopy to clipboardprint?
SimpleTableModel.PreenchendoTabelaCliente();
SimpleTableModel.tabelaCliente.updateUI();
[/quote]

No caso, esta tabela Cliente, só tem 8 registros. Mais a informação passada vai ser valida para quando tiver mais registros.

Discorpion obrigrado por sua ajuda, e desculpe a falta de conhecimento. Mais é uma quantidade muito grande de informação, e até assimilar tudo é preciso horas e horas de programação. (=

[quote]Bom, faz muito tempo que não me meto com JSE, mas, por que você não tenta criar uma nova thread para o JDialog?
Afinal, todos os componentes (e o que mais você criar) a partir de um JFrame irão compartilhar a mesma thread.
Abra o google chrome e o mozilla. Em cada um deles abra várias abas e, em cada um, as mesmas abas abertas do outro.
Abra o gerenciador de tarefas e analise qual consome mais recursos e qual divide os recursos em threads separadas.
Qual é mais lento?

Enfim, separando o processo do JDialog do principal, você ganha tempo e performance. [/quote]

Ainda não estudei Treads, mais irei estudar sua solução.

ViniGodoy, desculpe a falta de conhecimento.

Mais do que se trata este depurador?

Obrigado a todos pela ajuda!

Oi,

Você está fazendo:

editar_cliente.setVisible(true); editar_cliente.setModal(true);

E deveria fazer:

editar_cliente.setModal(true); editar_cliente.setVisible(true);

O modal deverá ser setado antes da visualização da janela.

Aproveite e coloque um Sysout após o método setVisible(). Assim quando você executar o dispose() ele deverá mostrar o trace:

editar_cliente.setModal(true); editar_cliente.setVisible(true); System.out.println("Executei o dispose() corretamente, continuando o processamento");

Tchauzin!

[quote=lina]Oi,

Você está fazendo:

editar_cliente.setVisible(true); editar_cliente.setModal(true);

E deveria fazer:

editar_cliente.setModal(true); editar_cliente.setVisible(true);

O modal deverá ser setado antes da visualização da janela.

Aproveite e coloque um Sysout após o método setVisible(). Assim quando você executar o dispose() ele deverá mostrar o trace:

editar_cliente.setModal(true); editar_cliente.setVisible(true); System.out.println("Executei o dispose() corretamente, continuando o processamento");

Tchauzin![/quote]

OK Lina. Muito Obrigado por seu Comentario!

Assim que chegar em casa, irei realizar esse teste.

Vlww…

discorpion meu problema foi resolvido:

SOLUÇÃO:

Cadastrar_Cliente editar_cliente = new Cadastrar_Cliente(this, true); editar_cliente.preencherJpaneCDClEditar(cdc_id); editar_cliente.setVisible(true); //

Estava com 2 problemas.

1º No momento que eu clicava em Salvar minhas modificações realizadas no JDialog e voltada para o JFrame, a aplicação travava. Resolvi chamando o meu método pela instancia e não pela Classe. E setei o método como public void.

2º E o problema que estava tendo pelo fato de o jDialog quando setado como Modal = True não preencher as jTexts inseridas, foi resolvido colocando a chamada do metodo preencherJpaneCDCEditar antes do setVisible.

Agradeço a ajuda de todos!

Muito Obrigado Discorpion…

Bom dia a todos.

Ahhhh… :!:

Bem que eu desconfiava deste método, visto que métodos assim como atributos estáticos, por não serem atributos e métodos de instâncias, eles não atualizam os atributos de instâncias, e nem enxergam o procedimento dos métodos de instâncias, nem sei como você conseguiu declarar lá dentro todos os JTextFields, e presumo no mínimo que tenha declarado estes também como estáticos.

Quando disse que talvez este era um dos problemas, porque estava na dúvida se era este o um dos problemas ou o JTable que estava sendo entupido com dados de demais.

Fico feliz por ter conseguido resolver um dos seus problemas.

Um abraço.

Sempre pense umas 10x antes de fazer um método estático. E, se esse método não for um método fábrica, um método que só use variáveis locais ou parâmetros, ou um cache, pense outras 10x.