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]