如何在没有textfield或textarea的java中获取keyevent?

时间:2013-12-05 11:59:07

标签: java keyevent

我正在研究java中的GUI。现在,我正在编写一个关于按钮的小程序,我有一个问题。通常,我使用鼠标单击一个按钮,我设置了一个消息对话框,但现在,我想设置一个方法。在这个方法中,我使用KeyEvent,我想按一个键,程序将自动选择按钮而不用鼠标。我使用了TextArea和TextField,现在我想在没有TextAreaTextField的情况下使用此方法。 示例:当我单击按钮时,将显示消息对话框,而不是单击按钮,当我按 A 时,将出现消息对话框。 请帮帮我!

2 个答案:

答案 0 :(得分:0)

您可以向KeyListener添加JFrameHere是一个很好的教程。

示例

让我们创建一个实现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(); 
         }
    }
}

KeyMapper现在只要t被点击,就会在你的程序中调用一个方法。要将其添加到Program,您可以使用以下行:

this.addKeyListener(new KeyMapper(this));

答案 1 :(得分:0)

对于更大的事件处理,我建议@Chris建议但是对于像你这样小的东西 - 也就是说,在keyPress上调用一个简单的方法,我个人会跟一个匿名的听众一起去

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