Acão Button JPassword

5 respostas
analins

Olá comunidade, uma dúvida . Como atribuir um valor a dado botão, por exemplo Button1 é igual a 9, ler esse valor no JPasswordField, e referenciar valor armazenado no JPasswordField em outra classe. Vejam os códigos abaixo, eles ilustram melhor.

Agradeço,

package p;
 
Class A {

private void button1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
//como atribuir o valor ao button1 ? Valor a ser exibido no JPasswordField  ???     
}         
}
package p;
Class B {
private void button2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
//como atribuir o valor ao button2 ? Valor a ser exibido no JPasswordField  ???       
}         
}
package p;
Class C { // Como fazer referencias aos valores armazenados  no JPasswordField da classe A e da  classe B ???
}

5 Respostas

visola

Não sei se entendi direito o seu problema. Quer pegar o texto do JButton que foi clicado, é isso?
Todo evento possui uma referência à fonte geradora do evento. Se esta for o seu botão pode usar isso para pegar o texto dele:

JButton botao = (JButton)evento.getSource();
String texto = botao.getText();

A mesma coisa pode ser feita para conseguir o texto de um JPasswordField.

Se você precisa armazenar algum valor (tipo um objeto) num botão, então pode estender a classe JButton para isso:

public class ValuedButton extends JButton {
   private Object value = null;

   // getters e setters para Value aqui
}
analins

Olá obrigada,

Esses Button são de um teclado numérico implementado na tela [ por exemplo, atribuo ao Button1 o número 1, ao Button2 o número 2 , …] e em cada uma das classes estão os campos do JPassword que vão ler informações desses Buttons.

Meu problema é :

  1. Como atribuir esses valores ao JButtons ?

  2. Como em uma terceira classe acessar a essas informações dos JPasswords enviadas pelos Buttons ?

visola

Acho que entendi um pouco melhor agora… vamos lá.

Atribuir o valor ao JButton pode ser feito usando o setText mesmo. Então se o botão 1 vai mostrar o texto 1, então você cria o botão assim:

// ...
JButton bt1 = new JButton("1");
// ...

// Depois para pegar o valor do botão pode fazer como eu tinha mostrado:
bt1.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
      String valor = ( (JButton) e.getSource() ).getText();
      // Coloca o valor no JPassword:
      passField.setText(valor);
      // ou se quiser colocar no final do texto que já está lá:
      char[] atual = passField.getPassword();
      passField.setText(new String(atual) + valor);
   }
});

Agora, para pegar os valores dos JPasswordFields, você teria que ter acesso a eles (ou diretamente pela propriedade ou por um getter). Você pode declará-los como “public” no seu form ou criar um getter para cada um deles:

public class A {
   public JPasswordField passField1;
}

// ou - preferível:

public class A {
   private JPasswordField passField1;

   public JPasswordField getPass1() {
      return passField1;
   }
}

Depois para acessá-los:

// dentro de um outro lugar
char [] valor1 = instanciaClassA.getPass1().getPassword();
analins

Obrigada Visola !!! Bem didáticas essas explicações.

analins

:smiley:

Criado 17 de fevereiro de 2011
Ultima resposta 20 de fev. de 2011
Respostas 5
Participantes 2