2017-07-15 81 views
0
import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyListener; 

public class Test implements KeyListener 

我有一个JTextField:为什么当使用这些代码块不激活这些if语句

private static JTextField tf = new JTextField(); 

在main方法我有:

tf.addKeyListener(new Test()); 

然后,我有抽象方法KeyTyped,KeyPressed,KeyReleased,但问题在于if语句中的代码:if(e.getKeyCode()== KeyEvent.VK_ENTER)未激活。

@Override 
public void keyTyped(java.awt.event.KeyEvent e){ 
    if(e.getKeyCode() == KeyEvent.VK_ENTER){ 
     System.out.println("This is working"); 
    } 
} 

如果我参加了这一点:

if(e.getKeyCode() == KeyEvent.VK_ENTER) 

而离开的System.out.println();它会激活,但我不想为几个条件编写代码,所以我可以为不同的键创建特定的功能。

import javax.swing.*; 
import java.awt.event.KeyListener; 

/** 
* Created by Kyle on 7/15/2017. 
*/ 
public class KeyEvent implements KeyListener { 
@Override 
public void keyTyped(java.awt.event.KeyEvent e) { 
    if(e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER){ 
     System.out.println("Test"); 
    } 
} 

@Override 
public void keyPressed(java.awt.event.KeyEvent e) { 

} 

@Override 
public void keyReleased(java.awt.event.KeyEvent e) { 

} 

public static void main(String[] args){ 
    JFrame f = new JFrame(); 
    f.setSize(500, 600); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.addKeyListener(new KeyEvent()); 
    f.setVisible(true); 
    } 
} 
+0

这只是说传递给该方法的KeyEvent不是'KeyEvent.VK_ENTER' ... – alfasin

+0

也许你......没有按下回车键?发布一个完整的重现问题的最小示例,并准确告诉我们您正在做什么来测试它。 –

+1

这可能是你的答案:https://stackoverflow.com/questions/4419667/detect-enter-press-in-jtextfield –

回答

0

keyTyped事件将适用于某些可以打印的内容 - 由键表示的Unicode字符由键盘发送到系统输入。

您可以使用keyReleased方法捕获ENTER键事件,以便仅在释放键时调用它。