Ajuda com if[RESOLVIDO]

11 respostas
meyer

Boa tarde Galera,
O probela é o seguinte quando Clico no Botão Cancelar ele limpa os campos mas em seguida ele mostra a mensagem de senha incorreta, nao quero que ele faça isso quero que apenas limpe os campos.

Alguem pode me ajudar...
if(tf_usuario.getText().equals("") && jp_senha.getText().equals(""))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Digite o Usuário e Senha !!!");
		}
				if(tf_usuario.getText().equals("carlos") && jp_senha.getText().equals("meyer"))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Senha Correta Clique OK para Acessar o Sistema !!!");
			
					Primeira_Tela PT_obj = new Primeira_Tela();
					PT_obj.setVisible(true);
		}
					else
					{
						JOptionPane.showMessageDialog(null, "Usuário ou Senha Incorretos !!!");
						tf_usuario.setText("");
						jp_senha  .setText("");
						tf_usuario.requestFocus();
					}
		
		if (acao.getSource() == bt_cancelar)
		{
			tf_usuario.setText("");
			jp_senha  .setText("");
			tf_usuario.requestFocus();
		
		}
		
	}

}

11 Respostas

J

Se realizar a devida identação do código e colocar chaves nos ifs irá perceber fácil o problema!
:lol:

meyer:
Boa tarde Galera, O probela é o seguinte quando Clico no Botão Cancelar ele limpa os campos mas em seguida ele mostra a mensagem de senha incorreta, nao quero que ele faça isso quero que apenas limpe os campos. Alguem pode me ajudar...
if(tf_usuario.getText().equals("") && jp_senha.getText().equals(""))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Digite o Usuário e Senha !!!");
		}
				if(tf_usuario.getText().equals("carlos") && jp_senha.getText().equals("meyer"))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Senha Correta Clique OK para Acessar o Sistema !!!");
			
					Primeira_Tela PT_obj = new Primeira_Tela();
					PT_obj.setVisible(true);
		}
					else
					{
						JOptionPane.showMessageDialog(null, "Usuário ou Senha Incorretos !!!");
						tf_usuario.setText("");
						jp_senha  .setText("");
						tf_usuario.requestFocus();
					}
		
		if (acao.getSource() == bt_cancelar)
		{
			tf_usuario.setText("");
			jp_senha  .setText("");
			tf_usuario.requestFocus();
		
		}
		
	}

}
T

Boa tarde Amigo.

Fiz um código aqui identado
Olha se vai rodar aí no seu.

Sou novo aqui e tentei rodar seu código mas não consegui pois acho que tem que ter mais coisas.
No entanto eu construí seu código aqui no java e não apontou erro depois das alterações que eu fiz.

Fique atento para as identações e {chaves}
pois pode confundir mesmo.

Abraço e retorna falando se deu certo.

package teste;

import javax.swing.JOptionPane;

public class Post1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		
		Object bt_ok = null;
		if(tf_usuario.getText().equals("") && jp_senha.getText().equals(""))  
        {  
            if(acao.getSource() == bt_ok)         
                JOptionPane.showMessageDialog(null, "Digite o Usuário e Senha !!!");  
        }//Fim If 
        if(tf_usuario.getText().equals("carlos") && jp_senha.getText().equals("meyer"))  
        {  
        	if(acao.getSource() == bt_ok)
        	{
	        	JOptionPane.showMessageDialog(null, "Senha Correta Clique OK para Acessar o Sistema !!!");  
	        	Primeira_Tela PT_obj = new Primeira_Tela();  
	        	PT_obj.setVisible(true);  
	        }  
        else  
        {  
	        JOptionPane.showMessageDialog(null, "Usuário ou Senha Incorretos !!!");  
	        tf_usuario.setText("");  
	        jp_senha  .setText("");  
            tf_usuario.requestFocus();  
        }  
          
        Object bt_cancelar = null;
		if (acao.getSource() == bt_cancelar)  
        {  
            tf_usuario.setText("");  
            jp_senha  .setText("");  
            tf_usuario.requestFocus();  
          
        }  
          
    }//Fim If Principal  
  
  
	}//main

}//post1
meyer:
Boa tarde Galera, O probela é o seguinte quando Clico no Botão Cancelar ele limpa os campos mas em seguida ele mostra a mensagem de senha incorreta, nao quero que ele faça isso quero que apenas limpe os campos. Alguem pode me ajudar...
if(tf_usuario.getText().equals("") && jp_senha.getText().equals(""))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Digite o Usuário e Senha !!!");
		}
				if(tf_usuario.getText().equals("carlos") && jp_senha.getText().equals("meyer"))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Senha Correta Clique OK para Acessar o Sistema !!!");
			
					Primeira_Tela PT_obj = new Primeira_Tela();
					PT_obj.setVisible(true);
		}
					else
					{
						JOptionPane.showMessageDialog(null, "Usuário ou Senha Incorretos !!!");
						tf_usuario.setText("");
						jp_senha  .setText("");
						tf_usuario.requestFocus();
					}
		
		if (acao.getSource() == bt_cancelar)
		{
			tf_usuario.setText("");
			jp_senha  .setText("");
			tf_usuario.requestFocus();
		
		}
		
	}

}
meyer

TiagoSena,
A unica coisa que tem de diferente do seu codigo para o meu é Object como null o resto ta igual.
O meu codigo continua com o mesmo problema.
mesmo assim obrigado.

Se alguem puder me ajudar agradeço.

meyer

ai Galera desculpa insistir mas se alguém puder ajudar.

adriano_si

meyer,

Primeiro - o primeiro Teste que você faz é verificar se os campos usuário e senha estão vazios.

Pergunto: Pra que limpar campos que já estão vazios ???

Segundo - O que é o seu objeto acao ??? Não consegui identificar… E em que método está esse seu código ??? Tem certeza que é esse trecho que é chamado quando você clica no botão [Cancelar] ??? Se for, ele está pouco coeso, pois está fazendo BEM MAIS funções do que é pra realmente fazer.

O ideal seria você colocar o método ActionListener que você está usando para chamar esse método.

Identação também é fundamental pra deixar seu código legível.

Abs []

meyer

Segue o Codigo Completo para ajudar.

package Telas;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class Interface extends JFrame implements ActionListener
	{
	JLabel lb_usuario, lb_senha, lb_direito;
	JTextField tf_usuario, tf_senha;
	JPasswordField jp_senha;
	JButton bt_ok, bt_cancelar;
	
	public Interface()
	{
	
		
		super("                                                                                               DIGITE SEU USUÁRIO E SENHA");
		setSize(800,700);
		setLocation(400,100);
		setResizable(false);
		getContentPane().setBackground(Color.lightGray);
		getContentPane().setLayout(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		lb_usuario = new JLabel("USUÁRIO :");
		lb_usuario.setFont(new Font("ARIAL",Font.BOLD,15));
		lb_senha   = new JLabel("SENHA   :");
		lb_senha .setFont(new Font("ARIAL",Font.BOLD,15));
		lb_direito   = new JLabel("--Todos os Direitos Reservados--");
		lb_direito .setFont(new Font("WIDE LATIN",Font.ITALIC,11));
		
		tf_usuario = new JTextField(5);
		jp_senha   = new JPasswordField(5);
		
		jp_senha.setEchoChar('*');
		
		bt_ok = new JButton("OK");
		bt_ok.setFont(new Font("ARIAL",Font.BOLD,14));
		bt_cancelar  = new JButton("CANCELAR");
		//lb_titulo  .setFont(new Font("Arial",Font.BOLD,18));
		
		bt_cancelar  .setFont(new Font("ARIAL",Font.BOLD,14));
		
		lb_usuario.setBounds(280, 20, 80, 20);
		lb_senha  .setBounds(280, 60, 80, 20);
		lb_direito  .setBounds(320, 170, 200, 20);
		
		tf_usuario.setBounds(370, 20, 150, 20);
		jp_senha  .setBounds(370, 60, 150,20);
		
		bt_ok.	    setBounds(280, 110, 110,20);
		bt_cancelar.setBounds(410, 110, 110,20);
		
		getContentPane().add(lb_usuario);
		getContentPane().add(lb_senha);
		getContentPane().add(lb_direito);
		getContentPane().add(tf_usuario);
		getContentPane().add(jp_senha);
		getContentPane().add(bt_ok);
		getContentPane().add(bt_cancelar);
		
		bt_ok      .addActionListener(this);
		bt_cancelar.addActionListener(this);
		
	}

	
	public static void main(String[] args)
	{
		Interface face_obj = new Interface();
		face_obj.setVisible(true);

	}	
	public void actionPerformed(ActionEvent acao) 
	{	
		//Object bt_ok = null; 
		if(tf_usuario.getText().equals("") && jp_senha.getText().equals(""))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Digite o Usuário e Senha !!!");
		}
		//Verifica se usúario e senha estão Corretos
		if(tf_usuario.getText().equals("carlos") && jp_senha.getText().equals("meyer"))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Senha Correta Clique OK para Acessar o Sistema !!!");
			
					//Método que Chama a Classe Primeira_Tela 
					Primeira_Tela PT_obj = new Primeira_Tela();
					PT_obj.setVisible(true);
		} 
					else
					{
						JOptionPane.showMessageDialog(null, "Usuário ou Senha Incorretos Vacilão  !!!");
						tf_usuario.setText("");
						jp_senha  .setText("");
						tf_usuario.requestFocus();
					}
		
		//Método para limpar o Campos Usúario e Senha
		Object bt_cancelar = null; 
		if (acao.getSource() == bt_cancelar)
		{
			tf_usuario.setText("");
			jp_senha  .setText("");
			tf_usuario.requestFocus();
		
		}
		
	}

}
ErickRAR

Seria melhor se você refizesse seus ifs

if(acao.getSource() == bt_ok) { if(campos em branco){ } else if(senha correta){ } else { //limpar campos } }

meyer

Erick olha deu certo mas, quando eu coloco o campo para vir a mensagem de senha errada continuar com o mesmo erro de antes.
So funciona sem o trecho que informar que a senha está incorreta.

T

Meyer,
Boa noite.

Primeiro peço desculpas pela ambiguidade que lancei no primeiro post, onde relativamente coloquei o código igual ao seu pensando ajudar.
No entanto deixo uma dica...(Sempre que for lançar o código, não esqueça de colocar as classes pois ajuda muito. Eu tive que criar uma imaginária e por isso acho que acabei errando). Sempre coloque o código completo pois vai mais rápido para tentar ajudar.

Segundo consegui resolver o seu problema mas tive que alterar algumas partes do seu código.
Fiz o melhor possível.
Qualquer dúvida me fale.

package Telas;  
  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
  
import javax.swing.*;  
  
  
public class Interface extends JFrame implements ActionListener  
    {  
    JLabel lb_usuario, lb_senha, lb_direito;  
    JTextField tf_usuario, tf_senha;  
    JPasswordField jp_senha;  
    JButton bt_ok, bt_cancelar;  
      
    public Interface()  
    {  
      
          
        super("                                                                                               DIGITE SEU USUÁRIO E SENHA");  
        setSize(800,700);  
        setLocation(400,100);  
        setResizable(false);  
        getContentPane().setBackground(Color.lightGray);  
        getContentPane().setLayout(null);  
        setDefaultCloseOperation(EXIT_ON_CLOSE);  
          
        lb_usuario = new JLabel("USUÁRIO :");  
        lb_usuario.setFont(new Font("ARIAL",Font.BOLD,15));  
        lb_senha   = new JLabel("SENHA   :");  
        lb_senha .setFont(new Font("ARIAL",Font.BOLD,15));  
        lb_direito   = new JLabel("--Todos os Direitos Reservados--");  
        lb_direito .setFont(new Font("WIDE LATIN",Font.ITALIC,11));  
          
        tf_usuario = new JTextField(5);  
        jp_senha   = new JPasswordField(5);  
          
        jp_senha.setEchoChar('*');  
          
        bt_ok = new JButton("OK");  
        bt_ok.setFont(new Font("ARIAL",Font.BOLD,14));  
        bt_cancelar  = new JButton("CANCELAR");  
        //lb_titulo  .setFont(new Font("Arial",Font.BOLD,18));  
          
        bt_cancelar  .setFont(new Font("ARIAL",Font.BOLD,14));  
          
        lb_usuario.setBounds(280, 20, 80, 20);  
        lb_senha  .setBounds(280, 60, 80, 20);  
        lb_direito  .setBounds(320, 170, 200, 20);  
          
        tf_usuario.setBounds(370, 20, 150, 20);  
        jp_senha  .setBounds(370, 60, 150,20);  
          
        bt_ok.      setBounds(280, 110, 110,20);  
        bt_cancelar.setBounds(410, 110, 110,20);  
          
        getContentPane().add(lb_usuario);  
        getContentPane().add(lb_senha);  
        getContentPane().add(lb_direito);  
        getContentPane().add(tf_usuario);  
        getContentPane().add(jp_senha);  
        getContentPane().add(bt_ok);  
        getContentPane().add(bt_cancelar);  
          
        bt_ok      .addActionListener(this);  
        bt_cancelar.addActionListener(this);  
          
    }  
  
      
    public static void main(String[] args)  
    {  
        Interface face_obj = new Interface();  
        face_obj.setVisible(true);  
  
    }     
    /* (non-Javadoc)
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent acao)   
    {     
    	//boolean campos_apagados = false;
    	//Método para limpar campos
    	if (acao.getSource() == bt_cancelar)  
			{  
			    tf_usuario.setText("");  
			    jp_senha  .setText("");  
			    tf_usuario.requestFocus();
			    //campos_apagados = true; //fiz essa variável para se o cara apertar cancel aí não exibe a mensagem para digitar toda hora
			    				// ou seja já apaga diretamente
			  
			}
        //Aqui se o usuário não digitar nada e der ok ou cancelar, aparece uma mensagem pedindo para digitar  
        if(tf_usuario.getText().equals("") && jp_senha.getText().equals(""))  
        {  
        	//Melhorei essa parte para caso o usuário também clicar em cancelar sem digitar algo
        	//aí vai mandar digitar usuário e senha também
            if(acao.getSource() == bt_ok)         
                JOptionPane.showMessageDialog(null, "Digite o Usuário e Senha !!!");  
        }  
        
        //Verifica se usúario e senha estão Corretos e exibe a mensagem caso seja true 
        if(tf_usuario.getText().equals("carlos") && jp_senha.getText().equals("meyer") && acao.getSource() == bt_ok)  
        {              
                JOptionPane.showMessageDialog(null, "Senha Correta Clique OK para Acessar o Sistema !!!");  
              
                    //Método que Chama a Classe Primeira_Tela   
                    Primeira_Tela PT_obj = new Primeira_Tela();  
                    PT_obj.setVisible(true);
        }
        //se user e senha incorretos exibe a mensagem do vacilão
        else
        	if(! tf_usuario.getText().equals("carlos") && ! jp_senha.getText().equals("meyer"))
        	{
        		if(acao.getSource() == bt_ok && ! tf_usuario.getText().equals("") && ! jp_senha.getText().equals(""))
        		{
                  JOptionPane.showMessageDialog(null, "Usuário ou Senha Incorretos Vacilão  !!!");  
                  tf_usuario.setText("");  
                  jp_senha  .setText("");  
                  tf_usuario.requestFocus();
        		}
        	}
    }
}

Observação: Mexer com muitos IFs é caixão...
Tente usar outras estruturas de decisão como while, switch e etc, pois o IF só é bom até certo ponto
e tipo dependendo do ponto em que você alterar, acaba tendo que mudar a lógica toda...

Se quiser evoluir a lógica me fala que a gente pode trocar umas idéias...

Outra coisa... só falta arrumar uma lógica para caso o usuário digitar somente o usuário e dar ok ou então digitar somente a senha e dar ok.
Não deu tempo para que eu arrumasse pois estou na Faculdade e tenho aula agora, mas o código acima está 100% rodando.

Abraços e comenta aí se deu certo.

meyer:
Boa tarde Galera, O probela é o seguinte quando Clico no Botão Cancelar ele limpa os campos mas em seguida ele mostra a mensagem de senha incorreta, nao quero que ele faça isso quero que apenas limpe os campos. Alguem pode me ajudar...
if(tf_usuario.getText().equals("") && jp_senha.getText().equals(""))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Digite o Usuário e Senha !!!");
		}
				if(tf_usuario.getText().equals("carlos") && jp_senha.getText().equals("meyer"))
		{
			if(acao.getSource() == bt_ok)		
				JOptionPane.showMessageDialog(null, "Senha Correta Clique OK para Acessar o Sistema !!!");
			
					Primeira_Tela PT_obj = new Primeira_Tela();
					PT_obj.setVisible(true);
		}
					else
					{
						JOptionPane.showMessageDialog(null, "Usuário ou Senha Incorretos !!!");
						tf_usuario.setText("");
						jp_senha  .setText("");
						tf_usuario.requestFocus();
					}
		
		if (acao.getSource() == bt_cancelar)
		{
			tf_usuario.setText("");
			jp_senha  .setText("");
			tf_usuario.requestFocus();
		
		}
		
	}

}
meyer

Tiagão valeu,
Deu certo, só vou acertar para quando o digitar o usuário certo e a senha errada ou o contrario informar “Usuario ou senha Icorretos”, so ta funcionando quando digito
os 2 errados quando digito so um errado não acontece nada.

Cara valeu mesmo pela ajuda.

T

Blz Mayer tranquilo.

Não deu para colocar todos os casos fechados em IF pois estou na Facul igual falei.

Fico feliz de poder ajudar.
Precisando estamos aí…

Depois que terminar a implementação dessas duas classes, me manda uma cópia para eu ver como ficou.

Muito bom o assunto.

Abraço e sucessos!

meyer:
Tiagão valeu,
Deu certo, só vou acertar para quando o digitar o usuário certo e a senha errada ou o contrario informar “Usuario ou senha Icorretos”, so ta funcionando quando digito
os 2 errados quando digito so um errado não acontece nada.

Cara valeu mesmo pela ajuda.

Criado 30 de agosto de 2012
Ultima resposta 30 de ago. de 2012
Respostas 11
Participantes 5