JFrame "travado"

19 respostas
D

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:

19 Respostas

D

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:

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

D

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
D

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

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?

D

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

D

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

D

ja tentou usar o debugger?

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

C

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í.

D

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

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…

D

ja tentou usar o debugger?

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

Sim, funciona.

D

Qual o metodo para eu redesenhar o JFrame por completo?

C

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…

C

dofas

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

D

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…

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

D

charleston10:
dofas

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

Eclipse

C

Posta as funções.

Sistema.login();
ValidaLogin…

G

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

D

dofas:
charleston10:
dofas

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

Eclipse

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?

C

darklordkamui
kkkkkk… só lamento… spokakopskaopsa

Conserta então ai, GURU…

C

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

[img]http://img87.imageshack.us/img87/6194/semttulocd.jpg[/img]

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;
    }

}
public interface interfaceEntrar {
    public boolean Entrar() throws Exception;
}
/**
 *
 * @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;
    }


}
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..

;]

Criado 30 de outubro de 2012
Ultima resposta 30 de out. de 2012
Respostas 19
Participantes 4