如何等到用户关闭框架才能运行剩下的代码?

时间:2012-10-11 01:37:10

标签: java frame wait

我这里有这个代码,它是一个调用另一个jFrame来编辑东西的按钮,这些东西会进入需要用户输入更新的jTable。我想通过放入相同的按钮来自动进行此更新,但是当我调用更新jTable的函数时,没什么好处,因为java机器不等待...

private void editarImovelActionPerformed(java.awt.event.ActionEvent evt) // Button {                                             
    int i = 0;
    int linha = tabelaImoveis.getSelectedRow(); // tabelaImoveis = jTable
    if (tabelaImoveis.isRowSelected(linha)) {
        {
            try { 
                Integer codigo = Integer.parseInt(tabelaImoveis.getValueAt(linha, 0).toString());
            } catch (Exception e) { 
                mensagem.message("Linha sem Valor!"); 
                i = 1;
            } finally {
                if (i == 0) { 
                    Integer codigo = Integer.parseInt(tabelaImoveis.getValueAt(linha, 0).toString());
                    for (Imovel imovel : imovelLista) { 

                        if (imovel.getCodigo() == codigo) {                               frmAlterar alterar = new frmAlterar();
                            alterar.setLocationRelativeTo(null); 
                            alterar.setVisible(true);
                            alterar.setDefaultCloseOperation(alterar.DISPOSE_ON_CLOSE);
                            alterar.setarAtributos(imovel);

                        }
                    }
                }
            }
        }
    } else {
        mensagem.message("Select Something!"); // Same as System.out...
    }


    updatejTable(); // This code here I want to execute after the frame "alterar" closes
}

1 个答案:

答案 0 :(得分:2)

对此的答案与所有​​类似问题(并且有很多)相同:不要使用其他JFrame,请使用模态JDialog。

    if (i == 0) { 
        Integer codigo = Integer.parseInt(tabelaImoveis.getValueAt(linha, 0).toString());
        for (Imovel imovel : imovelLista) { 
            if (imovel.getCodigo() == codigo) {                               
                frmAlterar alterar = new frmAlterar();  // *** this should be a modal JDialog
                alterar.setLocationRelativeTo(null); 
                // alterar.setVisible(true);
                // alterar.setDefaultCloseOperation(alterar.DISPOSE_ON_CLOSE);
                alterar.setarAtributos(imovel);
                alterar.setVisible(true);
            }
        }
    }