Como trabalhar com JPasswordField

2 respostas
T

Galera é o seguinte, to fazendo uma aplicação desktop, onde eu tenho uma classe Password que tem um Container e um JPasswordField. a questão é a seguinte: quando abro minha aplicação terei de fazer um login com senha para que seja liberado o software. Fiz uma classe Password como segue. Na main eu instancio essa Password. QUando eu clico no botão desse Password, ele verificaria a senha digitada com a senha já cadastrada na main. Porém dessa maneira não está dando certo, pois ele verifica a senha antes de permitir digita-la. Poderia fazer esse JPasswordField na main, mas gostaria que fosse uma classe para que mesmo depois de logado se houver alguma restrição com senha eu pudesse utilizá-la novamente. Alguma dica??? Vlw…

// classe MAIN
package firstgraphicinterface;

import javax.swing.JOptionPane;

public class MainClass {

    public MainClass(){}

    public static void main(String[] args){
        String senha = "123";
        boolean senhaValida = false;
        
        // instancio objeto 
        Password psw = new Password(senha);
        
        senhaValida = psw.verificarSenha();
       
       if(senhaValida == false)
            JOptionPane.showMessageDialog(null, "Desculpe, sistema travado");
       
       else{
            //mainFrame é o frame da minha aplicação principal
            MainFrame mf = new MainFrame();
            mf.setVisible(true);
        }
    }
}
// classe PASSWORD

package firstgraphicinterface;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import java.awt.*;
import java.awt.event.*;

public class Password extends JFrame{
    
    private JPasswordField password;
    private JButton button;
    private String senha, pass;
    private boolean senhaValida = false;
    
    public Password(String s){
        super("Senha de Acesso");
        
        //recebe a senha passada
        pass = s;
        
        //faz uma tela
        Container tela = getContentPane();
        tela.setLayout(null);

        password = new JPasswordField(5);
        button = new JButton("Confirmar");

        password.setBounds(70,40,100,20);
        button.setBounds(70,60,100,20);

        password.setEchoChar('#');
        
        // evento do botão
        button.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
                    senha = password.getPassword().toString();
	    	}
	    });

        tela.add(password);
        tela.add(button);

        setSize(250,150);
        setVisible(true);
        setResizable(false);
    }
    // método para verificar a senha
    public boolean verificarSenha(){
        return (senha.equals(pass));
    }
}

2 Respostas

B

Você pode fazer a sua classe Password receber uma janela que irá abrir após a validação. Aí você joga a chamada de rotina de verificação de password pra dentro da classe Password também. Dentro da própria Password, você trata o evento do botão para que faça a validação e vá para a janela recebida na criação, caso contrário, exiba o JOptionPane.

T

Alguém teria uma outra idéia, essa não deu certo…

Criado 16 de abril de 2008
Ultima resposta 16 de abr. de 2008
Respostas 2
Participantes 2