簡體   English   中英

如何在沒有文本字段或文本區域的Java中獲取keyevent?

[英]How to get keyevent in java without textfield or textarea?

我正在研究Java中的GUI。 現在,我正在編寫一個有關按鈕的小程序,我有一個問題。 通常,我使用鼠標單擊一個按鈕,然后設置一個“消息對話框”,但是現在,我想設置一個方法。 在這種方法中,我使用KeyEvent ,我想按一個鍵,程序將自動選擇按鈕而無需鼠標。 我已經使用了TextArea和TextField ,現在我想在沒有TextAreaTextField情況下使用此方法。 示例:當我單擊按鈕時,將顯示消息對話框,現在當我按A時將顯示消息對話框,而不是單擊按鈕。 請幫我 !

您可以將KeyListener添加到JFrame 是一個很棒的教程。

讓我們創建一個實現KeyListener的類,並假設您有一個擴展JFrame的類,稱為Program

public class KeyMapper implements KeyListener
{
    // Lots of methods will need to be written. I won't do them all.

    private Program world;

    public KeyMapper(Program world)
    {
         this.world = world;  
    }

    /**
     * This is the event that fires when a key is hit.
     * @param e the event object passed when a key is hit.
     * @Override
     */
    public void keyTyped(KeyEvent e) {
         if(e.getKeyChar() == 't') {
             world.callMethod(); 
         }
    }
}

每當點擊tKeyMapper就會在您的程序中調用一個方法。 要將其添加到您的Program ,可以使用以下行:

this.addKeyListener(new KeyMapper(this));

對於較大的事件處理,我建議使用@Chris的建議,但對於與您一樣小的建議-即,在keyPress上調用一個簡單的方法,我個人將使用匿名偵聽器

.addKeyListener(new KeyListener() {  
    public void keyPressed(KeyEvent e) {  
        //method call goes here 
    }  
});

暫無
暫無

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

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