JFrame "travado"

Olá pessoal,

tenho um JFrame bem básico aqui, com JTextField de login e senha, e ao clicar o botao de login, se o login e senha estiverem errados, eu jogo na tela um JOptionPane.showMessageDialog, dizendo que os dados estão incorretos. So que ao clicar OK no JOptionPane, não é mais possivel editar os JTextField de login e senha?

Como resolvo isso?

Obrigado. :slight_smile:

[quote=dofas]Olá pessoal,

tenho um JFrame bem básico aqui, com JTextField de login e senha, e ao clicar o botao de login, se o login e senha estiverem errados, eu jogo na tela um JOptionPane.showMessageDialog, dizendo que os dados estão incorretos. So que ao clicar OK no JOptionPane, não é mais possivel editar os JTextField de login e senha?

Como resolvo isso?

Obrigado. :slight_smile: [/quote]

posta algum trecho de codigo… falando por cima não tem como ajudar

Resumindo:

public class Frame extends JFrame{
   private JTextField login, senha;
   private JButton botao;

   public Frame(){
    //declaracoes dos jtextfield e JBUtton

   ButtonHandler handler = new ButtonHandler();
   botao.addActionListener(handler);
   }

   	private class ButtonHandler implements ActionListener {
		public void actionPerformed(ActionEvent event) {
			try {
				Sistema.login();					
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
//Na Classe sistema
    	public static void login() throws IOException {
 		if (validaLogin(frame.getLogin(), frame.getSenha())) {
						
			JOptionPane.showMessageDialog(null, "Seja bem vindo " + usuarioLogado.getNome());
               }
              else 
                            JOptionPane.showMessageDialog(null, "Login e/ou senha errados");

}

 //Aqui ele deveria deixar eu editar login e senha de novo, mas nao deixa. O JFrame Continua aberto

[quote=dofas]Resumindo:

public class Frame extends JFrame{
   private JTextField login, senha;
   private JButton botao;

   public Frame(){
    //declaracoes dos jtextfield e JBUtton

   ButtonHandler handler = new ButtonHandler();
   botao.addActionListener(handler);
   }

   	private class ButtonHandler implements ActionListener {
		public void actionPerformed(ActionEvent event) {
			try {
				Sistema.login();					
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
//Na Classe sistema
    	public static void login() throws IOException {
 		if (validaLogin(frame.getLogin(), frame.getSenha())) {
						
			JOptionPane.showMessageDialog(null, "Seja bem vindo " + usuarioLogado.getNome());
               }
              else 
                            JOptionPane.showMessageDialog(null, "Login e/ou senha errados");

}

 //Aqui ele deveria deixar eu editar login e senha de novo, mas nao deixa. O JFrame Continua aberto

[/quote]

certo… quando vc fala que nao consegue inserir os dados para tentar novamente isso quer dizer que o jframe trava? ou que o JOptionPane trava e nao deixa vc fazer mais nada?

imprime alguma exception?

Nenhuma exception, o JOPtion pane fecha quando clico ok, e volto pra o Frame, so que ele nao deixa eu inserir texto nos JTextField.

E por exemplo, se apos apertar OK no JOptionpane, eu apertar o botao de login de novo, nada acontece.

ja tentou usar o debugger?

mas deveria funcionar perfeitamente… sem fazer essa validação de login e senha funciona corretamente?

Arruma a identação e Abre e Fecha as Chaves ‘{ }’ no lugar certo.
[color=red]Ta tudo errado isso[/color], e o erro esta aí.

[quote=charleston10]Arruma a identação e Abre e Fecha as Chaves ‘{ }’ no lugar certo.
Ta tudo errado isso, e o erro esta aí.[/quote]

cara ta certo o que ele postou… só que ta picotado… um pouco de cada classe afinal deve ser um sistema de uma empresa, nao tem como sair liberando codigo de uma classe toda…

ja tentou usar o debugger?

mas deveria funcionar perfeitamente… sem fazer essa validação de login e senha funciona corretamente?
[/quote]

Sim, funciona.

Qual o metodo para eu redesenhar o JFrame por completo?

Você tem certeza?

Presta bem atenção olha lá… a Chave do inicio do Frame esta fechando antes do Metodo Void Main
Por isso, como que vai chamar a função? Sendo que não esta dentro do bloco, ele nao reconhece, por isso q nao acontece nada…

dofas

Qual IDE que você esta usando, Netbeans, Eclipse ou bloco?

[quote=charleston10]Você tem certeza?

Presta bem atenção olha lá… a Chave do inicio do Frame esta fechando antes do Metodo Void Main
Por isso, como que vai chamar a função? Sendo que não esta dentro do bloco, ele nao reconhece, por isso q nao acontece nada…
[/quote]

Cara esse não é o código original, so escrevi um resumo, pra ele entender o que esta acontecendo. O programa esta compilando OK.

[quote=charleston10]dofas

Qual IDE que você esta usando, Netbeans, Eclipse ou bloco?[/quote]

Eclipse

Posta as funções.

Sistema.login();
ValidaLogin…

Coloque um System.out.println(“passou”); após o try catch que chama a função de login, pra ver se ele pelo menos está passando ali, se estiver, o problema não está nos eventos…

Ou debuga e encontra o erro fácil fácil, só ir executando linha por linha

[quote=dofas][quote=charleston10]dofas

Qual IDE que você esta usando, Netbeans, Eclipse ou bloco?[/quote]

Eclipse[/quote]

Ta e o que tem haver a IDE??? cara é como eu disse antes nao é sintax que ta errado… ¬¬

é alguma processo que acontece no meio do JFrame… argh… pega o bonde andando é tenso…

mas voltando… vc nao me respondeu… sem a validação se o usuario entrou com a senha certa ou errada funciona perfeitamente?

darklordkamui
kkkkkk… só lamento… spokakopskaopsa

Conserta então ai, GURU…

De uma olhada…

Crie um classe para fazer a função de autenticação
Crie outra classe so para os dados do usuario
Crie uma interface
Crie uma janela

[code]import java.beans.Statement;
import java.sql.ResultSet;
/**
*

  • @author guga
    */
    public class clsEntrar implements interfaceEntrar {

    //objetos
    clsUsuario objUsuario = new clsUsuario();

    //variavel para guardar comandos SQLs
    String sSQL="";

    //metodo construtor
    public clsEntrar(){

    }

    public boolean Entrar() throws Exception {

     //conecta seu banco de dados        
     
     boolean entrou =false;
    
     sSQL="SELECT * FROM usuarios WHERE usuario ="+objUsuario.getUsuario+" AND senha ="+objUsuario.getSenha;
    
     try {
    
         Statement sta = null;
         ResultSet res = null;
    
         sta = cnn.createStatement(res.TYPE_SCROLL_INSENSITIVE,res.CONCUR_READ_ONLY);;
         res = sta.executeQuery(sSQL);
    
         if(res.next()){
            entrou = true;
         }
    
     }catch(Exception e){
         e.printStackTrace();
     }
    
     return entrou;
    

    }

}[/code]

public interface interfaceEntrar { public boolean Entrar() throws Exception; }

[code]/**
*

  • @author guga
    */
    public class clsUsuario {
    private static String Usuario;

    /**

    • @return the Usuario
      */
      public static String getUsuario() {
      return Usuario;
      }

    /**

    • @param aUsuario the Usuario to set
      */
      public static void setUsuario(String aUsuario) {
      Usuario = aUsuario;
      }
      private String Senha;

    /**

    • @return the Senha
      */
      public String getSenha() {
      return Senha;
      }

    /**

    • @param Senha the Senha to set
      */
      public void setSenha(String Senha) {
      this.Senha = Senha;
      }

}
[/code]


import java.util.logging.Level;
import java.util.logging.Logger;

/*
 * jfEntrar.java
 *
 * Created on 30/10/2012, 20:57:41
 */

/**
 *
 * @author guga
 */
public class jfEntrar extends javax.swing.JFrame {

    /** Creates new form jfEntrar */
    public jfEntrar() {
        initComponents();
    }

    /** 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() {

        jtUsuario = new javax.swing.JTextField();
        jtSenha = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jbEntrar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Usuário");

        jLabel2.setText("Senha");

        jbEntrar.setText("Entrar");
        jbEntrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbEntrarActionPerformed(evt);
            }
        });

        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()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jbEntrar)
                    .addComponent(jtSenha, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE)
                    .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jtUsuario, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jtUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jbEntrar)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jbEntrarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

        //pega dados do formulario
        PegaDados();

        clsEntrar painelLogar = new clsEntrar();

        try {
            if(painelLogar.Entrar()){
                new jfOutraTela().setVisible(true);
            }
        } catch (Exception ex) {
            Logger.getLogger(jfEntrar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private void PegaDados(){

        clsUsuario objUsuario = new clsUsuario();

        objUsuario.setUsuario(jtUsuario.getText());
        objUsuario.setSenha(jtSenha.getText());
    }
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new jfEntrar().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JButton jbEntrar;
    private javax.swing.JTextField jtSenha;
    private javax.swing.JTextField jtUsuario;
    // End of variables declaration

}

Ta bem básico, só pra você ter uma base e ajeitar ai como vc quiser…

;]