Olá comunidade,
Tento nesses códigos, simular as tela de senha de bancos financeiros (os Buttons exibem letras da senha )
Ao prescionar um Button, ele pega uma letra na primeira tela, outra letra na segunda tela e outra na terceira.
A primeira tela ao ler o digito prescionado por um button deve ser chamada automaticamente a segunda tela, o mesmo p/ 2a com a 3a.
O código está escrito em forma elementar. Faço alguns comentários, mostro alguns erros (como o da comparação com equals - String, char).
Mostrem-me o que estou fazendo errado. Façam sugestão de modificações.
Agradeço muito a ajuda.
[code]public class SenhaS1 extends javax.swing.JFrame {// 1a tela
public SenhaS1() {
initComponents();
}
public JPasswordField getPass1() {
return jPasswordField1;
}
private void initComponents() {
private void button8ActionPerformed(java.awt.event.ActionEvent evt) {
valorB("a");
}
private void button7ActionPerformed(java.awt.event.ActionEvent evt) {
valorB("d");
}
//o mesmo para os outros buttons […]
//o objetivo aqui é: ao ser pressionado um button (ele deve ser lido e a próxima tela deve ser chamada
//para ler o outro valor. Esse mesmo método repito nas outras 2 classes
private void jPasswordField1ActionPerformed(java.awt.event.ActionEvent evt) {
char[] seq1 = jPasswordField1.getPassword();
if (seq1!=null) { // ver se caracter dif de nulo, caso verdadeiro chama a 2a tela, funciona???
SenhaS2 ss2 = new SenhaS2();
ss2.setDefaultCloseOperation(javax.swing.JFrame.HIDE_ON_CLOSE);
ss2.setVisible(true);
setVisible(false); }
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new SenhaSequencia1().setVisible(true);
}
});
}
private javax.swing.JPasswordField jPasswordField1;
private void valorB(String letra1){ //atribui valor ao button
jPasswordField1.setText(valor);
}
}
[/code]
[code]public class SenhaS2 extends javax.swing.JFrame { //2a tela
public SenhaS2() {
initComponents();
}
public JPasswordField getPass2() {
return jPasswordField2;
}
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
valorBotao(“b”);
} // […]
private void valorBotao(String letra2){
SenhaS1 ss1 = new SenhaS1();
char[]letra1 = ss1.getPass1().getPassword(); //pega o valor digitado em SenhaS1
jPasswordField2.setText(new String (letra1)+ letra2); //adiciona as 2 letras e imprime na tela, correto???
} //ou seja é lido 1 digito do button, mas impresso 3 no JPawordField
}
view plaincopy to clipboardprint?
public class SenhaS3 extends javax.swing.JFrame {//3a tela
public SenhaS3() {
initComponents();
}
public JPasswordField getPass3() {
return jPasswordField3;
}
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
valorBotao(“c”);
} // […]
private void valorBotao(String letra3){
SenhaS1 ss1 = new SenhaS1();
char[]letra1 = ss1.getPass1().getPassword(); //pega o valor digitado em SenhaS1
jPasswordField2.setText(new String (letras)+ letra3); //adiciona as 2 letras e imprime na tela, correto???
} //ou seja é lido 1 digito do button, mas impresso 3 no JPawordField
}
[/code]
[code]public class TelaConf extends javax.swing.JFrame {//Comparo a senha
public TelaConf() {
initComponents();
}
SenhaC s3 = new SenhaC();
// char[] sen = s3.getPass3().getPassword();
String sen = s3.getPass3().getPassword();//dá erro
String real = "abc";
if(sen.equals(real)){ //o erro acontece aqui, quando uso ==, dá erro também
//tentei com String sen = new String(s3.getPass3().getPassword()); // Continua dando erro.
}
{
MensagemP p = new MensagemP();
p.setDefaultCloseOperation(javax.swing.JFrame.HIDE_ON_CLOSE);
p.setVisible(true);
setVisible(false);
} else
{ MensagemS s = new MensagemS();
s.setDefaultCloseOperation(javax.swing.JFrame.HIDE_ON_CLOSE);
s.setVisible(true);
setVisible(false);
}
}
[/code]