Tela de login

Fala galera tudo tranqüilo. Galera a minha duvida e a seguinte no meu sistema de controle de estoque eu tenho uma tela de menu com ás opções para o usuário, quando eu executo o programa já aparece o menu, mais eu criei uma tela de login para o usuário se autenticar primeiro, mais só que eu não estou conseguindo que a tela de login abra primeiro que o menu. Galera desde de já agradeço pela atenção e pela paciência e espero que vocês possam me ajudar. Abaixo segue os métodos da minhas classes.

na minha tela de Login eu tenho esse método:

[codpublic void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
if(vericaCamposVazios()==true){
LoginBO lb = new LoginBO();
Login l = new Login();

    			l.setUsuarioL(textUsuario.getText());
       			l.setSenhaL(passSenha.getText());
    			
   
    			lb.verificaSeUsuarioExiste(l);
    			
    			this.limpaCampos();
    			
    		}
    		
    	}catch(LoginException le){
    		JOptionPane.showMessageDialog(null,le.getMessage(),
    		"Informação",JOptionPane.ERROR_MESSAGE);;
    	}
    	catch(Exception e){
    		JOptionPane.showMessageDialog(null,e.getMessage(),
    		"Informação",JOptionPane.ERROR_MESSAGE);
    	}
    	if(resultado!=true){
    		dispose();
    	}
  
    }e]

[/code]

na minha classe LogiBO eu tenho esse método:

public boolean verificaSeUsuarioExiste(Login login) throws SQLException, LoginException{
	
		LoginDAO ld= new LoginDAO();
		login.getUsuarioL();
		login.getSenhaL();
		
		
		ld.consultarUsuarioSenha(login);
		
		if((!ld.use.equals(login.getUsuarioL()))&&(ld.pass.equals(login.getSenhaL()))){
			resultado=false;
			throw new LoginException("Usuário inexistente");
			}
   		else if((ld.use.equals(login.getUsuarioL()))&&(!ld.pass.equals(login.getSenhaL()))){
   			resultado=false;
   			throw new LoginException("Senha inexistente");	
			}

  		else if((!ld.use.equals(login.getUsuarioL()))&&(!ld.pass.equals(login.getSenhaL()))){
  			resultado=false;
  			throw new LoginException("Usuário e senha inexistente");	
		}
  		else if((ld.use.equals(login.getUsuarioL()))&&(ld.pass.equals(login.getSenhaL()))){
  			resultado=true;
  			//throw new LoginException("Usuário e senha inexistente");	
		}
		
		
		return resultado;
		
	
		
		
	}

e na minha classe LoginDAO eu tenho esse método:

	public boolean consultarUsuarioSenha(Login login)throws SQLException{
 		
 		    
 			PreparedStatement stmt = this.connection.prepareStatement("SELECT usuarioLog,senhaLog FROM login WHERE usuarioLog= ? or senhaLog=?");
 			
 			stmt.setString(1,login.getUsuarioL());
 	 		stmt.setString(2,login.getSenhaL());
 		
 			
 			ResultSet rs = stmt.executeQuery();
 			
 			
 	 		 if(rs.next())
 	 		 {
  				use = rs.getString("usuarioLog");
    			pass = rs.getString("senhaLog");
 	 			
 	 			result=true;
 	 		 }
 	 		 
 	 		else{
 	 			result= false;
 	 		}
 	 		 
 	 		 
 		 	rs.close();
 		 	stmt.close();
			
 		 	
 	 	 	return result;
 	 	 	
 	 	 	
 	}
 	

Desculpa aí por te errado com ás tags code.

método da classe Tela de Login

public void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {
	        // TODO add your handling code here:
	    	try{
	    		if(vericaCamposVazios()==true){
	    			LoginBO lb = new LoginBO();
	    			Login l = new Login();
	    			
	    			l.setUsuarioL(textUsuario.getText());
	       			l.setSenhaL(passSenha.getText());
	    			
	   
	    			lb.verificaSeUsuarioExiste(l);
	    			
	    			this.limpaCampos();
	    			
	    		}
	    		
	    	}catch(LoginException le){
	    		JOptionPane.showMessageDialog(null,le.getMessage(),
	    		"Informação",JOptionPane.ERROR_MESSAGE);;
	    	}
	    	catch(Exception e){
	    		JOptionPane.showMessageDialog(null,e.getMessage(),
	    		"Informação",JOptionPane.ERROR_MESSAGE);
	    	}
	    	if(resultado!=true){
	    		dispose();
	    	}
	  
	
    }

método da classe LoginBO


public boolean verificaSeUsuarioExiste(Login login) throws SQLException, LoginException{
	
		LoginDAO ld= new LoginDAO();
		login.getUsuarioL();
		login.getSenhaL();
		
		
		ld.consultarUsuarioSenha(login);
		
		if((!ld.use.equals(login.getUsuarioL()))&&(ld.pass.equals(login.getSenhaL()))){
			resultado=false;
			throw new LoginException("Usuário inexistente");
			}
   		else if((ld.use.equals(login.getUsuarioL()))&&(!ld.pass.equals(login.getSenhaL()))){
   			resultado=false;
   			throw new LoginException("Senha inexistente");	
			}

  		else if((!ld.use.equals(login.getUsuarioL()))&&(!ld.pass.equals(login.getSenhaL()))){
  			resultado=false;
  			throw new LoginException("Usuário e senha inexistente");	
		}
  		else if((ld.use.equals(login.getUsuarioL()))&&(ld.pass.equals(login.getSenhaL()))){
  			resultado=true;
  		
		}
		
		
		return resultado;
		
	
		
		
	}

método da classe LoginDAO

public boolean consultarUsuarioSenha(Login login)throws SQLException{
 		
 		    
 			PreparedStatement stmt = this.connection.prepareStatement("SELECT usuarioLog,senhaLog FROM login WHERE usuarioLog= ? or senhaLog=?");
 			
 			stmt.setString(1,login.getUsuarioL());
 	 		stmt.setString(2,login.getSenhaL());
 		
 			
 			ResultSet rs = stmt.executeQuery();
 			
 			
 	 		 if(rs.next())
 	 		 {
  				use = rs.getString("usuarioLog");
    			pass = rs.getString("senhaLog");
 	 			
 	 			result=true;
 	 		 }
 	 		 
 	 		else{
 	 			result= false;
 	 		}
 	 		 
 	 		 
 		 	rs.close();
 		 	stmt.close();
			
 		 	
 	 	 	return result;
 	 	 	
 	 	 	
 	}
 	

E ai cara blz?
Bom dá uma olhada e vê se a classe que está o login é a main do seu projeto. Eu passei varias vezes por este problema por que as a minha classe não era a main do projeto. Dá uma olhada nisso!
E quando o usuário existir, você faz a chamada da classe que está o menu.Blz?
Espero ter te ajudado!
Abraços

Sugiro vc implementar o método main na classe de Login.
Ao validar o usuário e o sistema permitir acesso, através da classe login vc chama a classe Menu.

:wink:

Valeu aí pelas dicas que vocês me deram, deu tudo certo aqui.

o método btnLoginActionPerformed(java.awt.event.ActionEvent evt) da classe tela de login ficou assim:

public void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {
	        // TODO add your handling code here:
	    	boolean resultado=true;
	    	try{
	    		if(vericaCamposVazios()==true){
	    			LoginBO lb = new LoginBO();
	    			Login l = new Login();
	    			
	    			l.setUsuarioL(textUsuario.getText());
	       			l.setSenhaL(passSenha.getText());
	       			
	       			//resultado recebe o valor do método lb.verificaSeUsuarioExiste(l)
	    			resultado=lb.verificaSeUsuarioExiste(l);
	    			//se a variavél resultado for igual a true mostra o menu do sistema
	    			if(resultado==true){
	    				MenuPrincipalDoSistema mp = new MenuPrincipalDoSistema();
	    				mp.setVisible(true);
	    				
	    			}
	    			
	    			this.limpaCampos();
	    			
	    		}
	    		
	    	}catch(LoginException le){
	    		JOptionPane.showMessageDialog(null,le.getMessage(),
	    		"Informação",JOptionPane.ERROR_MESSAGE);;
	    	}
	    	catch(Exception e){
	    		JOptionPane.showMessageDialog(null,e.getMessage(),
	    		"Informação",JOptionPane.ERROR_MESSAGE);
	    	}
	    	//se a variavel resultado for igual true fecha a tela de login e deixa aberto só a tela de menu
	    	if(resultado==true){
	    		dispose();
	    	}
	  
	    }

aproveitando o topico mais duas dúvidas.
1º O método passSenha.getText() que pega dados de um JPasswordField() está deprecated como eu resolvo isso.

2º Eu tenho um método na minha classe DAO que retorna um list com os dados da consulta.
exemplo:

public Collection findTodos()throws SQLException{
 		
 		PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM Produto");
 		ResultSet rs = stmt.executeQuery();
 		
 		Collection list = new ArrayList();
 		
 		 while (rs.next()) {
 		 	// criando o objeto produto
 		 	Produto produto = new Produto();
 			produto.setCodigoProd(rs.getInt("codigoProd"));
 		 	produto.setNomeProd(rs.getString("nomeProd"));
 		 	produto.setDescricaoProd(rs.getString("descricaoProd"));
 		 	produto.setQuantidadeAtualProd(rs.getInt("quantidadeAtualProd"));
 		 	
 		
 		 	// adicionando o objeto à lista
 		 	list.add(produto);
 		 }
 		
 		 rs.close();
 		 stmt.close();
 		
 		 return list;
 	}

E se por exemplo eu pegasse dados de duas ou mais tabelas como que ficaria esse método.

Mais uma vez obrigado aí pela compreensão.

Mais uma coisinha sobre essa condição.
//se a variavel resultado for igual true fecha a tela de login e deixa aberto só a tela de menu
if(resultado==true){
dispose();
}

Essa condição só funciona se o usuário entrar com o usuário e a senha corretas, caso contrario ela fecha a tela de login mesmo você clicando no login. Então como eu faço pra tela de login desaparecer quando a tela de menu aparecer. Mais uma vez obrigado.

Tipo depois do dispose() vc faz a chamada do metodo.
Por exemplo:

if(resultado==true){ 
dispose();
chamaMenu(); 
} 

Creio que isso resolva o seu problema.

Abraços

Valeu pelas dicas que vocês me deram, deu tudo certo aqui. Obrigado a todos.

Ola pessoa! eu estava com o mesmo problema que ele (respeito ao login), agora surgiu outro… eu criei a a classe login com main. Deu tudo certo… mas eu naum consigo chamar a classe do menu…

try{ while (x<3){ rs = stmt.executeQuery("SELECT * FROM USUARIO WHERE USU_LOG = '"+ JTFLog.getText()+"'"); while(rs.next()){ if(JPFSen.getPassword().toString() == rs.getString("USU_SEN")){ JIFPrinc = new JIFPrincipal(); JIFPrinc.setVisible(true); x=3; } else{ JLStatus.setText("Senha ou Login INVALIDO(S)"); JTFLog.requestFocus(); x++; } } } // dispose(); } catch(SQLException e){ JOptionPane.showMessageDialog(null, "Erro na Conexão. Erro: " + e.getMessage(), ProgNome, JOptionPane.ERROR_MESSAGE); }

assim q esta o comando para verificar a senha e o login…
to tendo dois problemas…
1º naum esta dando certo para verificar a senha
2º naum consigo chamar o Menu principal (JIFPrincipal)

alguem pode me dar uma luz…

Brother se eu fosse tu eu usava PreparedStatement ao invés de statement.

http://www.javafree.org/javabb/viewtopic.jbb?p=9320#9320
http://www.mhavila.com.br/topicos/bd/sqlbind.html