[quote=guisantogui]Quero fazer com que qdo o user clicar no botão de fechar a janela pergunte automaticamente se deseja ou não salvar as alterações!
encontrei o metodo setFocusCycleRoot, mas naum sei como usa-lo corretamente, tipo algum exemplo de codigo que eu devo passar no meio do metodo!
[/quote]
acho que vai depender do que você quer salvar!
Você terá que fazer algo do tipo!
Quando clicar em fechar pega esses valores e compara com o que estão no Banco de Dados!
Se estiver alterado pergunta que salvar!
e assim vai!
Lembrando que essa deve ser uma das soluções que existe! deve ter algo mais simples!
Quando o usuario clicar no X a janela não vai fechar e você ainda pode sobrescrever o método formWindowClosing, como exemplo:
private void formWindowClosing(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
int fechamento = JOptionPane.showConfirmDialog(null, "Deseja realmente sair ?", "Controle E/S", 1);
if (fechamento == 0) {
System.exit(0);
}
Quando o usuario clicar no X sera exibida um ConfirmDialog e ele decidira se ira fechar ou não, nesse metodo você pode chaamar alguem para salvar a suas informações, só não as salve nessa classe mesmo.
Bom existem maneiras de se fazer isso, você poderia delegar a uma classe a responsabilidade de monitorar seus campos e se ocorrer alguma alteração ela notificaria a alguem e esse alguem executaria uma ação (essa é a ideia do pattern observer) ou você poderia fazer um bind dos campos da sua view com uma classe java e monitorar para ver se teve alguma alteração eu acredito que na maioria dos casos você vai precisar saber o estado dos seus campos para poder fazer isso.
Aqui tem um tutorial de Observer
Para binder você pode usar o framework Genesis, desculpa se estou complicando muito, provavelmente existem soluções mais simples.