Como fazer para limitar o número de tentativas de acesso ao login de um sistema comercial

Ola pessoal gostaria que alguem me ajude nesse problema de limitar o número de tentativas do usuário no login.

Crie um contador… A cada falha você incrementa e compara com o número máximo de tentativas…

acho que tambem deveria haver alguma forma de controlar o tempo em que a condição de bloqueio “explodiu”, criando um campo na base de dados (que deve existir provavelmente) que guarda o tempo da tal “explosão” e vai comparando com o tempo que o utilizador tenta de novo entrar no sistema (por exemplo: o tempo deveria ser mais de 10 min) 8)

Isso, se for uma aplicação web basta utilizar o cookie ou a sessão …

Ai galera ta ai meu codigo de login, alguem sabe onde é que muda para limitar para o usuário ter só duas tentativas?

package br.com.lokfilmes.view;

import br.com.lokfilmes.bean.Funcionario;
import br.com.lokfilmes.util.EncriptaSenha;
import java.beans.Beans;
import java.util.List;
import javax.swing.JOptionPane;

/**
*

  • @author Márcio
    /
    public class LoginView extends javax.swing.JFrame {
    /
    * Creates new form LoginView */
    public LoginView() {
    initComponents();

      if (!Beans.isDesignTime()) {
         entityManager.getTransaction().begin();
     }
    

    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      @SuppressWarnings(“unchecked”)
      //
      private void initComponents() {

      entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory(“lokfilmesPU”).createEntityManager();
      query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery(“SELECT f FROM Funcionario f”);
      list = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : query.getResultList();
      jLabel2 = new javax.swing.JLabel();
      btCancelar = new javax.swing.JButton();
      btConfirmar = new javax.swing.JButton();
      jLabel6 = new javax.swing.JLabel();
      jPanel2 = new javax.swing.JPanel();
      jLabel1 = new javax.swing.JLabel();
      jLabel8 = new javax.swing.JLabel();
      jPanel1 = new javax.swing.JPanel();
      jLabel3 = new javax.swing.JLabel();
      jLabel4 = new javax.swing.JLabel();
      jLabel5 = new javax.swing.JLabel();
      txtLogin = new javax.swing.JTextField();
      txtSenha = new javax.swing.JPasswordField();

      setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
      setTitle(“Login”);
      addKeyListener(new java.awt.event.KeyAdapter() {
      public void keyPressed(java.awt.event.KeyEvent evt) {
      formKeyPressed(evt);
      }
      });

      jLabel2.setFont(new java.awt.Font(“Tahoma”, 1, 14));
      jLabel2.setText(“Acesso ao Sistema”);

      btCancelar.setText(“Cancelar”);
      btCancelar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      btCancelarActionPerformed(evt);
      }
      });

      btConfirmar.setText(“Confirmar”);
      btConfirmar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      btConfirmarActionPerformed(evt);
      }
      });
      btConfirmar.addKeyListener(new java.awt.event.KeyAdapter() {
      public void keyPressed(java.awt.event.KeyEvent evt) {
      btConfirmarKeyPressed(evt);
      }
      });

      jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/lokfilmes/imagens/1319139924_preferences-desktop-cryptography.png"))); // NOI18N

      jLabel8.setFont(new java.awt.Font(“Bernard MT Condensed”, 0, 18));
      jLabel8.setForeground(new java.awt.Color(255, 0, 0));
      jLabel8.setText(“LOGIN”);

      jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

      jLabel3.setText(“Entre com os dados”);

      jLabel4.setText(“Login”);

      jLabel5.setText(“Senha”);

      txtLogin.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      txtLoginActionPerformed(evt);
      }
      });

      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
      jPanel1.setLayout(jPanel1Layout);
      jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(21, 21, 21)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addComponent(jLabel4)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addComponent(txtLogin, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addComponent(jLabel5)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(txtSenha))))
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(98, 98, 98)
      .addComponent(jLabel3)))
      .addContainerGap(25, Short.MAX_VALUE))
      );
      jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jLabel3)
      .addGap(19, 19, 19)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jLabel4)
      .addComponent(txtLogin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(18, 18, 18)
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jLabel5)
      .addComponent(txtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      );

      javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
      jPanel2.setLayout(jPanel2Layout);
      jPanel2Layout.setHorizontalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel2Layout.createSequentialGroup()
      .addContainerGap()
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel2Layout.createSequentialGroup()
      .addGap(10, 10, 10)
      .addComponent(jLabel8))
      .addComponent(jLabel1))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addContainerGap(20, Short.MAX_VALUE))
      );
      jPanel2Layout.setVerticalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
      .addContainerGap(13, Short.MAX_VALUE)
      .addComponent(jLabel1)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jLabel8)
      .addGap(25, 25, 25))
      .addGroup(jPanel2Layout.createSequentialGroup()
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addContainerGap(13, Short.MAX_VALUE))
      );

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      .addContainerGap(131, Short.MAX_VALUE)
      .addComponent(btConfirmar)
      .addGap(80, 80, 80)
      .addComponent(btCancelar)
      .addGap(67, 67, 67))
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
      .addComponent(jLabel6))
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      .addContainerGap(175, Short.MAX_VALUE)
      .addComponent(jLabel2)
      .addGap(130, 130, 130))
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(17, 17, 17)
      .addComponent(jLabel2)
      .addGap(18, 18, 18)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(72, 72, 72)
      .addComponent(jLabel6))
      .addGroup(layout.createSequentialGroup()
      .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(btCancelar)
      .addComponent(btConfirmar))))
      .addContainerGap(18, Short.MAX_VALUE))
      );

      java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
      setBounds((screenSize.width-440)/2, (screenSize.height-263)/2, 440, 263);
      }//

    private void txtLoginActionPerformed(java.awt.event.ActionEvent evt) {

    }

    private void btConfirmarActionPerformed(java.awt.event.ActionEvent evt) {
    query = entityManager.createNamedQuery(“Funcionario.verificaLogin”);
    query.setParameter(“loginFuncionario”, txtLogin.getText());
    query.setParameter(“senhaFuncionario”, EncriptaSenha.encripta(txtSenha.getText()));
    List data = query.getResultList();

     if (data.size() > 0) {
    
         String args[] = new String[1];
         args[0] = data.get(0).getCodFuncionario().toString();
         MenuInicial.main(args);
         dispose();
        
     } else {
    
        
         JOptionPane.showMessageDialog(null, "Usuário/Senha incorretos");
         dispose();
     }
    

    }

private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}

private void btConfirmarKeyPressed(java.awt.event.KeyEvent evt) {
this.getRootPane().setDefaultButton(btConfirmar);
}

private void formKeyPressed(java.awt.event.KeyEvent evt) {

}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new LoginView().setVisible(true);
            
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton btCancelar;
private javax.swing.JButton btConfirmar;
private javax.persistence.EntityManager entityManager;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private java.util.List list;
private javax.persistence.Query query;
private javax.swing.JTextField txtLogin;
private javax.swing.JPasswordField txtSenha;
// End of variables declaration                   

}

Assim o seu codigo fica mais visivel Marcelo, ao adicionares um comentario vem algo escrito code em cima clicas uma vez para marcar inicio do codigo e a segundaz para marcar o fim

package br.com.lokfilmes.view;

import br.com.lokfilmes.bean.Funcionario;
import br.com.lokfilmes.util.EncriptaSenha;
import java.beans.Beans;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Márcio
 */
public class LoginView extends javax.swing.JFrame {
        /** Creates new form LoginView */
    public LoginView() {
        initComponents();

         if (!Beans.isDesignTime()) {
            entityManager.getTransaction().begin();
        }

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("lokfilmesPU").createEntityManager();
        query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery("SELECT f FROM Funcionario f");
        list = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : query.getResultList();
        jLabel2 = new javax.swing.JLabel();
        btCancelar = new javax.swing.JButton();
        btConfirmar = new javax.swing.JButton();
        jLabel6 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        txtLogin = new javax.swing.JTextField();
        txtSenha = new javax.swing.JPasswordField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Login");
        addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                formKeyPressed(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14));
        jLabel2.setText("Acesso ao Sistema");

        btCancelar.setText("Cancelar");
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });

        btConfirmar.setText("Confirmar");
        btConfirmar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btConfirmarActionPerformed(evt);
            }
        });
        btConfirmar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                btConfirmarKeyPressed(evt);
            }
        });

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/lokfilmes/imagens/1319139924_preferences-desktop-cryptography.png"))); // NOI18N

        jLabel8.setFont(new java.awt.Font("Bernard MT Condensed", 0, 18));
        jLabel8.setForeground(new java.awt.Color(255, 0, 0));
        jLabel8.setText("LOGIN");

        jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        jLabel3.setText("Entre com os dados");

        jLabel4.setText("Login");

        jLabel5.setText("Senha");

        txtLogin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtLoginActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel4)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(txtLogin, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel5)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtSenha))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(98, 98, 98)
                        .addComponent(jLabel3)))
                .addContainerGap(25, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel3)
                .addGap(19, 19, 19)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(txtLogin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(txtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(jLabel8))
                    .addComponent(jLabel1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(20, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(13, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel8)
                .addGap(25, 25, 25))
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(13, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(131, Short.MAX_VALUE)
                .addComponent(btConfirmar)
                .addGap(80, 80, 80)
                .addComponent(btCancelar)
                .addGap(67, 67, 67))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
                .addComponent(jLabel6))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(175, Short.MAX_VALUE)
                .addComponent(jLabel2)
                .addGap(130, 130, 130))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(17, 17, 17)
                .addComponent(jLabel2)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(72, 72, 72)
                        .addComponent(jLabel6))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btCancelar)
                            .addComponent(btConfirmar))))
                .addContainerGap(18, Short.MAX_VALUE))
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-440)/2, (screenSize.height-263)/2, 440, 263);
    }// </editor-fold>                        

    private void txtLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
    }                                        

    private void btConfirmarActionPerformed(java.awt.event.ActionEvent evt) {                                            
      query = entityManager.createNamedQuery("Funcionario.verificaLogin");
        query.setParameter("loginFuncionario", txtLogin.getText());
        query.setParameter("senhaFuncionario", EncriptaSenha.encripta(txtSenha.getText()));
        List<Funcionario> data = query.getResultList();
  
        if (data.size() > 0) {
     
            String args[] = new String[1];
            args[0] = data.get(0).getCodFuncionario().toString();
            MenuInicial.main(args);
            dispose();
           
        } else {

           
            JOptionPane.showMessageDialog(null, "Usuário/Senha incorretos");
            dispose();
        }
    }                                           

private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {                                           
dispose();
}                                          

private void btConfirmarKeyPressed(java.awt.event.KeyEvent evt) {                                       
this.getRootPane().setDefaultButton(btConfirmar);  
}                                      

private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
	
}                               

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LoginView().setVisible(true);
                
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btCancelar;
    private javax.swing.JButton btConfirmar;
    private javax.persistence.EntityManager entityManager;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private java.util.List list;
    private javax.persistence.Query query;
    private javax.swing.JTextField txtLogin;
    private javax.swing.JPasswordField txtSenha;
    // End of variables declaration                   

}

Basta vc criar uma variavel int como variavel de instancia da sua classe e cada vez que o login falhar vc incrementa um nela (i++) e depois de incrementar verifica se ela é == 3. Se for vc da um System.exit(0) ou implementa a liogica que vc quer q aconteça…

ta ai o codigo mais organizado, valeu…

package br.com.lokfilmes.view;

import br.com.lokfilmes.bean.Funcionario;
import br.com.lokfilmes.util.EncriptaSenha;
import java.beans.Beans;
import java.util.List;
import javax.swing.JOptionPane;

public class LoginView extends javax.swing.JFrame {
public LoginView() {
initComponents();

     if (!Beans.isDesignTime()) {
        entityManager.getTransaction().begin();
    }

}

private void btConfirmarActionPerformed(java.awt.event.ActionEvent evt) {
query = entityManager.createNamedQuery(“Funcionario.verificaLogin”);
query.setParameter(“loginFuncionario”, txtLogin.getText());
query.setParameter(“senhaFuncionario”, EncriptaSenha.encripta(txtSenha.getText()));
List data = query.getResultList();

    if (data.size() > 0) {
 
        String args[] = new String[1];
        args[0] = data.get(0).getCodFuncionario().toString();
        MenuInicial.main(args);
        dispose();
       
    } else {

       
        JOptionPane.showMessageDialog(null, "Usuário/Senha incorretos");
        dispose();
    }
}                                           

private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}

private void btConfirmarKeyPressed(java.awt.event.KeyEvent evt) {
this.getRootPane().setDefaultButton(btConfirmar);
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LoginView().setVisible(true);

        }
    });
}

private javax.swing.JButton btCancelar;
private javax.swing.JButton btConfirmar;
private javax.persistence.EntityManager entityManager;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private java.util.List list;
private javax.persistence.Query query;
private javax.swing.JTextField txtLogin;
private javax.swing.JPasswordField txtSenha;
}

Nao cheguei a ler bem o seu codigo Marcelo mas adicionando algi mais na idea do Lucas, Listener que faz a validacao do utilzador poderias adicionar um else que daria alguma mensagem de erro e ai fizesse os counts

poste o codigo entre as tags (é um botãozinho que tem qnd vc esta postando, ele fica em uma barrinha aqui em cima, vc clica nele uma vez, cola o codigo e depois clicla nele dinovo…) senão não da nem vontade de ler seu codigo…

mas, eu queria saber onde eu colocar o if, porque ja existe, eu vou ter que apagar o que ja tem, ou vou inserir outro, ja tentei fazer isso mas não acontece nada…

[quote=marcioaraujo]ta ai o codigo mais organizado, valeu…

package br.com.lokfilmes.view;

import br.com.lokfilmes.bean.Funcionario;
import br.com.lokfilmes.util.EncriptaSenha;
import java.beans.Beans;
import java.util.List;
import javax.swing.JOptionPane;

public class LoginView extends javax.swing.JFrame {
public LoginView() {
initComponents();

     if (!Beans.isDesignTime()) {
        entityManager.getTransaction().begin();
    }

}

private void btConfirmarActionPerformed(java.awt.event.ActionEvent evt) {
query = entityManager.createNamedQuery(“Funcionario.verificaLogin”);
query.setParameter(“loginFuncionario”, txtLogin.getText());
query.setParameter(“senhaFuncionario”, EncriptaSenha.encripta(txtSenha.getText()));
List data = query.getResultList();

    if (data.size() > 0) {
 
        String args[] = new String[1];
        args[0] = data.get(0).getCodFuncionario().toString();
        MenuInicial.main(args);
        dispose();
       
    } else {

       
        JOptionPane.showMessageDialog(null, "Usuário/Senha incorretos");
        dispose();
    }
}                                           

private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}

private void btConfirmarKeyPressed(java.awt.event.KeyEvent evt) {
this.getRootPane().setDefaultButton(btConfirmar);
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LoginView().setVisible(true);

        }
    });
}

private javax.swing.JButton btCancelar;
private javax.swing.JButton btConfirmar;
private javax.persistence.EntityManager entityManager;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private java.util.List list;
private javax.persistence.Query query;
private javax.swing.JTextField txtLogin;
private javax.swing.JPasswordField txtSenha;
}[/quote]

o seu codigo continua na mesma existe um link de ajuda que diz como deves postar os topicos acho que seria melhor le-los

Cara da um lida aqui

http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

abrxx

É porque eu sou novo nesse site ai eu to meio por fora como postar as coisas…

[quote=lokit"s]Cara da um lida aqui

http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

abrxx[/quote]

obrigado, estava procurando o link pra passar pa ele e nao encontrava…

valeu ai ja estou lendo…

Cara seria mais ou menos isso

[code]
public void OK() {
int tentativa=0;
if (jtxtUsuario.getText().equals(“ADM”)) {
if (jtxtSenha.getText().equals(“123456”)) {
Principal principal = new Principal();
principal.setExtendedState(MAXIMIZED_BOTH);
principal.setVisible(true);
dispose();
} else {
JOptionPane.showMessageDialog(null, “Senha Inválida!”, “Atenção”, JOptionPane.ERROR_MESSAGE);
jtxtSenha.setText("");
jbtnOK.setEnabled(false);
jtxtSenha.requestFocus();
tentativa++;
}
}

         if(tentativa == 3){   
            JOptionPane.showMessageDialog(null, "Usuário Inexistente ou Desativado!" + "\n" + "Contacte o Administrador do Sistema.", "Atenção", JOptionPane.ERROR_MESSAGE);     
            jtxtSenha.setText("");     
            jbtnOK.setEnabled(false);     
            jtxtUsuario.setText("");     
            jtxtSenha.setEditable(false);     
            jtxtUsuario.requestFocus();     
         }   
         }   [/code]
package br.com.lokfilmes.view;

import br.com.lokfilmes.bean.Funcionario;
import br.com.lokfilmes.util.EncriptaSenha;
import java.beans.Beans;
import java.util.List;
import javax.swing.JOptionPane;


public class LoginView extends javax.swing.JFrame {
public LoginView() {
        initComponents();

         if (!Beans.isDesignTime()) {
            entityManager.getTransaction().begin();
        }

    }


private void btConfirmarActionPerformed(java.awt.event.ActionEvent evt) {                                            
      query = entityManager.createNamedQuery("Funcionario.verificaLogin");
        query.setParameter("loginFuncionario", txtLogin.getText());
        query.setParameter("senhaFuncionario", EncriptaSenha.encripta(txtSenha.getText()));
        List<Funcionario> data = query.getResultList();
  
        if (data.size() > 0) {
     
            String args[] = new String[1];
            args[0] = data.get(0).getCodFuncionario().toString();
            MenuInicial.main(args);
            dispose();
           
        } else {

           
            JOptionPane.showMessageDialog(null, "Usuário/Senha incorretos");
            dispose();
        }
    }                                           

private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {                                           
dispose();
}                                          

private void btConfirmarKeyPressed(java.awt.event.KeyEvent evt) {                                       
this.getRootPane().setDefaultButton(btConfirmar);  
}                     

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LoginView().setVisible(true);
                
            }
        });
    }

 private javax.swing.JButton btCancelar;
    private javax.swing.JButton btConfirmar;
    private javax.persistence.EntityManager entityManager;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private java.util.List list;
    private javax.persistence.Query query;
    private javax.swing.JTextField txtLogin;
    private javax.swing.JPasswordField txtSenha;
}

será que ta certo agora?

valeu lokit"s pelo link…