Ir ao conteúdo
  • Cadastre-se

Trocando variáveis entre JFrames


Posts recomendados

Olá, estou desenvolvendo um programa de  cadastro simples. Infelizmente empaquei em uma parte em que preciso passar o Nome de usuário  da janela Cadastro para a 

janela Login...

 

 

 

Forum1.thumb.jpg.df92d3167007386766aa65d0ddebe67c.jpg

Forum2.thumb.jpg.2de8ed9be0eeb3816502f3b6d6211036.jpg

 

Na  primeira imagem está a tela de "Login", depois que eu clicar no botão "Cadastrar", a janela "Tela de Cadastro" será aberta. Por enquanto terei que preencher  apenas o campo de nome de usuario e senha. Depois que eu apertar no Botão verde "Cadastrar "O programa deverá abrir a janela Login novamente. Aqui começam os problemas de fato, pois criei um  script  condicional   para me retornar uma mensagem caso getText do campo "Nome de Usuario" seja igual ao do campo "Usuario" da tela Login. Vou mostrar meu código...

Forum3.thumb.jpg.fae4eb166b31ea4f3f65d4adc1716067.jpg

 

Forum4.thumb.jpg.e88045fe629176d74f0f67241b3d2160.jpg

 

Forum5.thumb.jpg.6c4183fcf6b3e164f3276ed510408ca0.jpg

 

Forum6.thumb.jpg.79286fee84bad8ded5ae99c42b0f1eb4.jpg

 

Forum7.thumb.jpg.960237eba185b8a59a66632a136ce57e.jpg

ImagemForum2.jpg

Link para o comentário
Compartilhar em outros sites

@IvanJava  boa noite.

 

No seu caso é simples. Como nenhuma dessa ações ainda gerou uma entrada em banco e você está apenas manipulando e comparando Strings da tela.

 

Na classe Login, crie um novo método, por exemplo

 

public void loginFromCadastro(String usuario) {
	input_do_usuario.setText(usuario);
}

Então, depois de clicar em cadastrar e utilizar um

//ao invés de fazer
L.setVisible(true);

//Faça
L.loginFromCadastro(txtUser.getText());
L.setVisible(true);

Outra coisa: ao comparar valores de um campo do tipo JPasswordField, JAMAIS use getText() como foi usado em algumas partes. Use sempre o getPassword().

 

A comparação entre eles também pode ocasionar erros. Veja que getText() retorna uma String, que é um objeto imutável e que permanece em memória até o Garbage Collector remover ele. O problema é justamente esse com uma senha: se ficar em memória pode ser lido por fontes externas e a senha roubada. Já o getPassword() retorna um array de char (char[]). Esse array pode ser modificado, mas precisa ser interceptado em tempo de execução (o que afeta a String também), mas ele não fica em memória depois de utilizado.

 

Para comparar passwords de maneira segura e sem dores de cabeça, faça

 

if (Arrays.equals(passwordField1.getPassword(), passwordField2.getPassword())) {
   // senhas iguais
} else {
  // senhas diferentes
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!