KeyListener i wykrycie dwukrotnego wciśnięcia klawisza

Odpowiedz Nowy wątek
2013-01-13 19:51
0

Witam
W swoim programie mam pole tekstowe typu JTextField. Dodaję do niego taki oto listener:

    private KeyListener keyAdapter = new KeyAdapter()
    {
        public void keyReleased(KeyEvent e)
        {
            if(e.getKeyCode()==KeyEvent.VK_ENTER)
            {
                ...
                                ...
            }
        }
    };

Do tej pory wszystko jest ok, natomiast chciałbym uzyskać taki efekt aby po wciśnięciu klawisze enter wykonała mi się załóżmy metoda_1, a po wciśnięciu jeszcze raz klawisza wykonała się metoda_2. Nie bardzo wiem w jaki sposób sprawdzić jaki klawisz został wciśnięty po wcześniejszym wciśnięciu. Mam nadzieję, że jasno opisałem swój problem. Dzięki z góry.

Pozostało 580 znaków

2013-01-13 22:04
1

nie wiem czy dobrze rozumiem, ale chodzi Ci po prostu o zapamiętanie wcześniejszego wyboru?

private KeyListener keyAdapter = new KeyAdapter()
    {
                public void keyReleased(KeyEvent e)
                {
                        if(e.getKeyCode()==KeyEvent.VK_ENTER)
                        {
                               if(e.getKeyCode()==KeyCode) metoda_2;
                               else metoda_1;
                       }
                KeyCode = e.getKeyCode();
                }
    };

czyli po każdym wciśnięciu klawisza zapisujesz do zmiennej prywatnej należącej do klasy w tym przypadku int KeyCode informację o wciśniętym klawiszu i w trakcie wciśnięcia Entera sprawdzasz czy wcześniej również był wciskany i uruchamia się metoda_1, bądź metoda_2.
Jeżeli chcesz to ograniczyć czasem to możesz jeszcze zapisywać czas wciśnięcia poprzedniego klawisza i sprawdzać czy było to wykonane np w ciągu ostatnich 2sekund.

edytowany 2x, ostatnio: justnobody, 2013-01-13 22:07

Pozostało 580 znaków

2013-01-14 00:31
0

Dzięki to mi znacznie pomogło.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0