0

.getKeyCode() 不返回键的 int 值吗?因为我已将我的 JTextField 设置为侦听键侦听器,并且在 keytyped 方法中,我检查按下了哪个键。这是我的代码片段:

JTextField jtf = new JTextField( );
jtf.addKeyListener( this );
.
.
.
public void keyTyped( KeyEvent e )
{
  if( e.getKeyCode( ) == KeyEvent.VK_ENTER ) System.out.println( "pressed enter" );
}

但每次我在 JTextField 中输入 enter 时,什么都没有发生,即没有打印。

4

5 回答 5

0

您必须实现KeyListener接口并覆盖类定义中的keyTyped方法才能使用

jtf.addKeyListener(this).

将上面的行替换为

jtf.addKeyListener(new KeyAdapter(){

    @Override
    public void keyTyped(KeyEvent e) {
        if( e.getKeyCode( ) == KeyEvent.VK_ENTER )   
            System.out.println( "pressed enter" );
    }
});
于 2012-04-05T04:09:52.783 回答
0

VK_ENTER对应于 enter 键的 int 值,看它如何是一个常数。您应该使用来自 swing 类的输入和动作映射来JTextField在焦点集中时侦听键值,而不是将键侦听器应用于文本字段并侦听一个键。因为每次按下一个键时都会创建一个事件(尽管可能会或可能不会处理),所以您应该阻止该方法在按下非回车键时运行。因此防止运行时错误和不必要的方法调用。

于 2012-04-01T14:37:28.970 回答
0

我只是想出了一个更好的方法。您应该将所有关键方法放在主类下方的内部类中,将 GUI 构造代码再次放在主方法之外的构造函数中。现在。你有没有实现 KeyListener 接口的内部方法,并实例化与所述接口关联的三个抽象方法,你只使用 keyTyped(KeyEvent e) 方法。在该方法中,实例化一个名为 keyHit 的 int 变量并将其分配给 e.getKeyChar(); 然后放置一个 if 语句,说明 if(keyHit == '\n') \n 将对应于 ENTER 键,

我试图发布一个我用来让它工作的代码模板,但是通过和缩进有点长,所以如果你真的需要它,我会通过一些电子邮件地址或其他东西发送给你

于 2012-04-01T15:26:47.243 回答
0

我认为您在比较错误的值。e.getKeyCode()返回密钥,那么我猜KeyEvent.VK_ENTER是真的不同。

于 2010-04-12T10:03:37.427 回答
0

也许你应该首先检查你的事件处理程序是否真的在你按下任何东西时被调用......或者你的事件处理程序是否能够接收 KeyEvents 对象,我相信问题就在那里......要让它工作,组件必须有重点... Java 教程

于 2010-03-04T05:23:12.707 回答