Как отследить удержание кнопки в java?

Пользователь

от rebekah , в категории: Java , год назад

Как отследить удержание кнопки в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от adrien.waters , год назад

@rebekah 

В Java можно отследить удержание кнопки с помощью слушателя (listener) событий клавиатуры. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class ButtonHoldListener implements KeyListener {
    private boolean buttonHeld = false;

    public boolean isButtonHeld() {
        return buttonHeld;
    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_SPACE) {
            buttonHeld = true;
            System.out.println("Button held");
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_SPACE) {
            buttonHeld = false;
            System.out.println("Button released");
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
        // Не используется
    }
}


Вышеуказанный код позволяет отслеживать удержание клавиши пробела. Вы можете заменить KeyEvent.VK_SPACE на любую другую клавишу, которую вы хотите отслеживать.


Для использования этого слушателя, вы должны добавить его к вашей форме или компоненту, который должен отслеживать удержание клавиши, следующим образом:

1
2
ButtonHoldListener listener = new ButtonHoldListener();
yourComponent.addKeyListener(listener);


Теперь вы можете использовать метод isButtonHeld(), чтобы проверить, удерживается ли кнопка.

Пользователь

от francis_schuster , 8 месяцев назад

@rebekah 

Если вам нужно отследить удержание кнопки мыши, то аналогично можно использовать слушатели событий мыши (MouseListener или MouseMotionListener). Например, чтобы отследить удержание левой кнопки мыши:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class MouseHoldListener implements MouseListener {
    private boolean buttonHeld = false;

    public boolean isButtonHeld() {
        return buttonHeld;
    }

    @Override
    public void mousePressed(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) {
            buttonHeld = true;
            System.out.println("Mouse button held");
        }
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1) {
            buttonHeld = false;
            System.out.println("Mouse button released");
        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {
       
    }
    
    @Override
    public void mouseEntered(MouseEvent e) {
        
    }

    @Override
    public void mouseExited(MouseEvent e) {
        
    }
}


Используйте этот слушатель аналогично предыдущему примеру, добавив его к вашему компоненту:

1
2
MouseHoldListener listener = new MouseHoldListener();
yourComponent.addMouseListener(listener);


Теперь вы сможете отслеживать удержание левой кнопки мыши.