[RESOLVIDO]Thread.Sleep e Timer não funcionão

5 respostas
J

Bom dia,

Eu pesquisei no forum, segui varios exemplos e não consegui fazer dar certo...

Meu problema é o seguinte, ao fazer logon, quero que, se o usuario ou a senha estiverem errados apareça a mensagem "Usuario/Senha Invalidos" em um jlabel.
Mas que depois de uns 2 segundos suma, mas se eu coloco de um jeito não aparece, e se eu mudo o codigo, não some...

Estou postando meu codigo.
private void LogarSistema() {
        Database Logon = new Database();
        MenuPrincipal Liberar = new MenuPrincipal();

        Acesso = Logon.getUserPrivilegios(txUsuario.getText(), txSenha.getText());
        Privilegio = Logon.setPrivilegioUser();
        if (Acesso == true) {
            this.dispose();
        } else {
            lbInvalido.setText("Usuário / Senha Inválidos");
            try {
                Thread.sleep(2000);                
                lbInvalido.setText("");                   
            } catch (InterruptedException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

5 Respostas

M

Tenta dar um repaint(). Outro problema é que seu sistema vai ficar parado enquanto a Thread dorme, o ideal seria você Timer ou Thread

M

Fiz um exemplo simples aqui.

public class TesteTimer extends JFrame{
	
	private String s = "AAA";
	private Label lbl = new Label(s);
	
	public TesteJframeRepaint() {
		setSize(200, 200);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		add(lbl);
		
		Timer timer = new Timer(1000, new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				s = "AAA".equals(s) ? "BBB" : "AAA";
				lbl.setText(s);
			}
		});  
		timer.start();
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new TesteTimer();
	}
}
J

Esta funcionando desse modo que voce me passou, o unico problema agora é que ele não para, e se eu coloco um timer.stop(); é que ele nao inicia…

como resolvo isso?

Vini_Fernandes
magostta:
Fiz um exemplo simples aqui.
public class TesteTimer extends JFrame{
	
	private String s = "AAA";
	private Label lbl = new Label(s);
	
	public TesteJframeRepaint() {
		setSize(200, 200);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		add(lbl);
		
		Timer timer = new Timer(1000, new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				s = "AAA".equals(s) ? "BBB" : "AAA";
				lbl.setText(s);
			}
		});  
		timer.start();
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new TesteTimer();
	}
}

Esse codigo nao esta compilando.

J

Depois de muitas tentativas e bater com a cabeça na parede consegui resolver.
Não ei se do modo mais correto, mas foi o que funcionou aqui...

to postando meu metodo se alguem quiser ver.

private void LogarSistema() {
        Database Logon = new Database();
        MenuPrincipal Liberar = new MenuPrincipal();

        TimerTask msg = new TimerTask() {

            @Override
            public void run() {
                lbInvalido.setText("");
            }
        };
        Timer aparecer = new Timer();



        Acesso = Logon.getUserPrivilegios(txUsuario.getText(), txSenha.getText());
        Privilegio = Logon.setPrivilegioUser();
        if (Acesso == true) {
            this.dispose();
        } else {
            lbInvalido.setText("Usuário / Senha Inválidos");
            aparecer.schedule(msg, 3500);
        }
Criado 3 de outubro de 2012
Ultima resposta 4 de out. de 2012
Respostas 5
Participantes 3