Ajuda com os eventos ActionMap e um InputMap

2 respostas
Queops82

Estou fazendo uma aplicação onde cada usuario logo no sistema e depois de um tempo sem registrar nenhuma ação ou movimento ele se desloga voltando a tela de login, eu estuve lendo um topido do Vini sobre ActionMap e um InputMap, e vi que poderia usar eles mas ai surgir algumas duvidas, entre elas se tenho que criar as ações para todas as teclas do tecledo e do mouse, junto com os movimentos dele.

2 Respostas

ViniGodoy

Talvez a melhor solução para esse caso seja registrar um AWTListener através da classe toolkit. Use:
Toolkit.getDefaultToolkit().addAWTEventListener

Isso escutará TODOS os eventos gerados pela AWT/Swing.

Queops82

Vini eu tive montando o meu método tempo esgotado a partir da sua dica, mais estou com um pequeno probleminha, eu consigo que minha tela de login reapareça após um tempo de ócio chegar ao tempo máximo permitido, mais a tela atual que o usuário deixou o sistema não fecha, só reabre um login por cima, como posso resolver isso, já que não posso usar o método dispose dentro da classe tempo esgotado, vou por o código do que estou fazendo pra ver se ajuda a entender.

public class tempo_Esgotado implements Runnable {
    private static final long Intervalo = 3000;

    private volatile long Evento;
    private long maxTempo;

    public tempo_Esgotado(long maxTempo) {
       this.maxTempo = maxTempo;
    }
    public void run() {
        Evento= System.currentTimeMillis();
        try {
           while(System.currentTimeMillis() - Evento < maxTempo) {
               Thread.sleep(Intervalo);
           }
           JOptionPane.showMessageDialog(null, "Tempo Esgotado, Sessão finalizada",
               "Sistema Higia", 1);
           dispose();//aqui deveria fechar o formulario aberto atual
          new login().setVisible(true);
        }
        catch (InterruptedException e) {}
    }
    public void notificar()
    {
        Evento = System.currentTimeMillis();
    }
}

obrigado por a ajuda

Criado 19 de junho de 2010
Ultima resposta 20 de jun. de 2010
Respostas 2
Participantes 2