Fechar uma tela de Login logo após a validação do usuário
7 respostas
arthurgon
Olá pessoal;
Estou com dificuldade param fechar uma tela de Login. Ela deveria fechar ou ao menos ficar invisível, no momento em que chamo a tela de menus. O fato é que a de menus apenas se sobropóe a ela, ficando as duas visíveis.
Alguem sabe como me ajudar? Só quero fechar a tela de Login.
Eis o código:
publicvoiddisplayAplicacao(){AplicacaoSWTaplicacao=newAplicacaoSWT(cTabFolder,SWT.NONE);aplicacao.setSize(newPoint(00,200));aplicacao.setBackgroundImage(newImage(Display.getCurrent(),getClass().getResourceAsStream("/imagem/backg0.gif")));cTabItem.setControl(aplicacao);PainelPrincipalprincipal=newPainelPrincipal(getParent(),getStyle());///Aqui eu tento deixar a tela atual (login)invisível.principal.setVisible(false);principal=null;aplicacao.setVisible(true);
Então, tem que usar o dispose() mesmo, coloca no evento do botão que faz o teste da validação, mais ou menos assim:
if((user.equals(usuario))&& (code.equals(senha))){ // aqui vc faz o teste de validação da sua maneira . . .
dispose(); // fecha a janela atual
Aplicacao(); // abre a nova janela
}
arthurgon
Então...mesmo assim não deu certo. A janela principal não fecha...prevalecendo as duas...a principal, que é onde faço o Login, e a de Menu, que é a que eu chamo de fato.
Eis o código:
////Código da Classe Login, mais espeficadamente o método no BotãopublicclassLoginextendsComposite{privateShellsShell=null;privateLabellabelUsuario=null;privateLabellabelSenha=null;publicTexttextUsuario=null;privateTexttextSenha=null;privateLabellabelLogo=null;privateButtonbuttonSalvar=null;publicLogin(Compositeparent,intstyle){super(parent,style);initialize();}/** * This method initializes sShell */privatevoidinitialize(){buttonSalvar=newButton(this,SWT.NONE);buttonSalvar.setBounds(newRectangle(145,360,110,70));buttonSalvar.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream("/palmesecure/img/access.png")));buttonSalvar.addSelectionListener(neworg.eclipse.swt.events.SelectionAdapter(){publicvoidwidgetSelected(org.eclipse.swt.events.SelectionEvente){System.out.println("Consulta");// TODO Auto-generated Event stub widgetSelected()((PainelPrincipal)getParent().getParent()).displayAplicacao();booleanvalida=false;if(textUsuario.getText().toString()==""||textSenha.getText().toString()==""){valida=true;}else{limpaTexto();}}});////Essa é a classe PainelPrincipal onde coloco os métodos de chamada///publicclassPainelPrincipalextendsComposite{privateCTabFoldercTabFolder=null;privateLoginpainelLogin=null;privateCTabItemcTabItem=null;publicPainelPrincipal(Compositeparent,intstyle){super(parent,style);initialize();}publicvoiddisplayAplicacao(){AplicacaoSWTaplicacao=newAplicacaoSWT(cTabFolder,SWT.NONE);aplicacao.setSize(newPoint(00,200));aplicacao.setBackgroundImage(newImage(Display.getCurrent(),getClass().getResourceAsStream("/imagem/backg0.gif")));cTabItem.setControl(aplicacao);///Aqui insiro o Disposedispose();aplicacao();}
Esse é o código que estou usando. Ele chama outra janela padrão Shell, e até aí td bem. mas o problema é q a tela do painel principal onde está o login prevalece.
Valeu.
colored
dispose();
Impossivel nao dar certo…
ja fiz sistema desse nipe seu.
colored
Da 1 Bico no Meu Metodo...
Achei a Aplicação.
[code]
public void testaLogin(String login, String senha) throws SQLException{
Connection c = ConnectionFactory.CriarConexao();
String sql = "Select 1 from Login where usuario = ? and senha = ?";
PreparedStatement ps = c.prepareStatement(sql);
ps.setString(1, login);
ps.setString(2, senha);
ResultSet rs = ps.executeQuery();
if (rs.next()){ // Ve? Ele Abre a nova tela e Fecha essa de Login.
new StartSystem().setVisible(true);
dispose();