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