簡體   English   中英

按下 shift 鍵時更改鼠標光標

[英]Change the mouse cursor when shift key is pressed

我有一個JPanel的子類PointPanel ,我想在其中實現以下行為:如果鼠標懸停在實例上並按下 shift 鍵,則鼠標光標變為手形光標; 如果釋放 shift 鍵,鼠標光標會變回默認光標。

為了實現這一點,我嘗試在構造函數中添加一個KeyListener

this.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
            System.out.println("Shift pressed");
            PointPanel.this.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
            System.out.println("Shift released");
            PointPanel.this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        }
    }
});

這種方法行不通。

包含此面板的窗口應該具有焦點,因為它是應用程序的唯一可見窗口。

我想念什么?

創建 KeyStroke 時我發現它很混亂。

對於按下我必須使用:

KeyStroke pressed = KeyStroke.getKeyStroke("shift pressed SHIFT");

但對於發布的我可以使用:

KeyStroke released = KeyStroke.getKeyStroke("released SHIFT");
KeyStroke released = KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, 0, true);

我用過:

InputMap im = getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM