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:
[code]public void displayAplicacao(){
AplicacaoSWT aplicacao = new AplicacaoSWT(cTabFolder, SWT.NONE);
aplicacao.setSize(new Point(00, 200));
aplicacao.setBackgroundImage(new Image(Display.getCurrent(), getClass().getResourceAsStream("/imagem/backg0.gif")));
cTabItem.setControl(aplicacao);
PainelPrincipal principal = new PainelPrincipal(getParent(),getStyle());
///Aqui eu tento deixar a tela atual (login)invisível.
principal.setVisible(false);
principal = null;
aplicacao.setVisible(true);[/code]
}
Alguem consegue me ajudar?
Valeu gente.
Não rolou…continuam as duas telas…
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
}
1 curtida
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:
[code]////Código da Classe Login, mais espeficadamente o método no Botão
public class Login extends Composite{
private Shell sShell = null;
private Label labelUsuario = null;
private Label labelSenha = null;
public Text textUsuario = null;
private Text textSenha = null;
private Label labelLogo = null;
private Button buttonSalvar = null;
public Login(Composite parent, int style) {
super(parent, style);
initialize();
}
/**
* This method initializes sShell
*/
private void initialize() {
buttonSalvar = new Button(this, SWT.NONE);
buttonSalvar.setBounds(new Rectangle(145, 360, 110, 70));
buttonSalvar.setImage(new Image(Display.getCurrent(), getClass().getResourceAsStream("/palmesecure/img/access.png")));
buttonSalvar
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
System.out.println("Consulta"); // TODO Auto-generated Event stub widgetSelected()
((PainelPrincipal)getParent().getParent()).displayAplicacao();
boolean valida = false;
if(textUsuario.getText().toString() == "" || textSenha.getText().toString()== ""){
valida=true;
}else{
limpaTexto();
}
}
});
////Essa é a classe PainelPrincipal onde coloco os métodos de chamada///
public class PainelPrincipal extends Composite {
private CTabFolder cTabFolder = null;
private Login painelLogin = null;
private CTabItem cTabItem = null;
public PainelPrincipal(Composite parent, int style) {
super(parent, style);
initialize();
}
public void displayAplicacao(){
AplicacaoSWT aplicacao = new AplicacaoSWT(cTabFolder, SWT.NONE);
aplicacao.setSize(new Point(00, 200));
aplicacao.setBackgroundImage(new Image(Display.getCurrent(), getClass().getResourceAsStream("/imagem/backg0.gif")));
cTabItem.setControl(aplicacao);
///Aqui insiro o Dispose
dispose();
aplicacao();
}[/code]
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.
dispose();
Impossivel nao dar certo…
ja fiz sistema desse nipe seu.
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();
rs.close();
ps.close();
}
else{
JOptionPane.showMessageDialog(null, "Login e/ou Senha Incorretos","Tente Novamente",1);
TxtPass.setText("");
TxtUser.setText("");
}
}
A Diferença do Seu pro Meu…
Poe o Metodo Pra Chama a Tela Primeiro =D.
Dps poe o Dispose(); ve ai quem sabe n funfa