FocusLost e ActionPerformed - Ordem de execução dos eventos

Pessoal bom dia,

Tenho uma aplicação que quando o usuário clica no botão uma ação para salvar os dados no banco é realizada, entretanto dependendo do campo que perder o foco(existem muitos campos na tela) essa ação pode ou não pode ser realizada e uma mensagem é exibida na tela.
Acontece que a ação de focusLost não é executada até o final para dai executar o evento de actionPerformed.
Abaixo coloquei um exemplo, onde eu preciso que o output seja :
Antes do JOptionPane
Após do JOptionPane
click botão

Entretanto atualmente o output fica:
Antes do JOptionPane
click botão
Após do JOptionPane

Obs: não dá pra tratar a JOptionPane no actionPerformed, esta já é uma aplicação “gigante” e teriamos que alterar muitas coisas para isto.

Alguém tem uma idéia de como consigo fazer com que o evento de focus lost seja executado até o final?

[code]import javax.swing.JOptionPane;

public class Teste extends javax.swing.JFrame {

private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;

public Teste() {

    jTextField1 = new javax.swing.JTextField("Retire o foco");
    jButton1 = new javax.swing.JButton("Clique");

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new java.awt.FlowLayout());

    jTextField1.addFocusListener(new java.awt.event.FocusAdapter() {

        public void focusLost(java.awt.event.FocusEvent evt) {
            System.out.println("Antes do JOptionPane");
            JOptionPane.showMessageDialog(null, "teste");
            System.out.println("Após do JOptionPane");
        }
    });
    getContentPane().add(jTextField1);

    jButton1.addActionListener(new java.awt.event.ActionListener() {

        public void actionPerformed(java.awt.event.ActionEvent evt) {
            System.out.println("click botão");
        }
    });
    getContentPane().add(jButton1);
    pack();
}

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new Teste().setVisible(true);
        }
    });
}

}[/code]

tenho uma com foco que qdo eu clico em outro botão ele executa o evento da perda de foco antes!

vlw!

guisantogui

Não entendi sua resposta… O meu problema esta no fato de que quanto apresento o JOptionPane a ordem de execução se perde…

Humm … eu ainda estou testando aqui, e não estou usando JOptionPane!

Acho q naum vou poder te ajudar então :wink:

Mas vai postando ai, q se eu souber eu respondo! :smiley: