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

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.

[code]
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);
        }
    }
}[/code]

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

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();
	}
}

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?

[quote=magostta]Fiz um exemplo simples aqui.

[code]
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();
}

}
[/code][/quote]

Esse codigo nao esta compilando.

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.

[code]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);
    }[/code]