2017-07-15 37 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鍵事件,以便僅在釋放鍵時調用它。