2013-02-04 35 views
0

我想觸發JTextField中的所有鍵盤輸入(也包括strg,alt和製表符)。JTextfield應觸發所有鍵盤輸入

super.addKeyListener(new KeyListener() { 

    @Override 
    public void keyTyped(KeyEvent arg0) { 
     System.out.println(arg0.getKeyChar()); 
    } 

    @Override 
    public void keyReleased(KeyEvent arg0) { 

    } 

    @Override 
    public void keyPressed(KeyEvent arg0) { 

    } 
}); 

KeyListener不會觸發鍵盤輸入,如strg,alt或/和tab。

這種情況下有解決方案嗎?

我需要這個了設置屏幕,用戶可以改變的關鍵,必須按下一樣向前移動的動作。

+2

*「我想觸發一個JTextField所有的鍵盤輸入(也STRG,ALT或標籤)。」 *爲什麼呢?什麼功能提供給最終用戶? –

回答

1

這對我的作品,我不得不爲了趕上Tab鍵禁用遍歷。 還要注意的是keyTyped()事件絕不會爲像AltShiftControl鍵。 但是你可以趕上他們當您使用keyPressed()keyReleased()事件:

public class Scribble extends JFrame implements KeyListener { 

    public Scribble(){ 
     this.setLayout(new BorderLayout()); 
     JTextField field = new JTextField(); 
     field.addKeyListener(this); 
     /* 
     * Disable tab, so we can catch it 
     */ 
     field.setFocusTraversalKeysEnabled(false); 
     this.add(field, BorderLayout.CENTER); 
     this.pack(); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setLocationRelativeTo(null); 
     this.setVisible(true); 
    } 

    public void keyTyped(KeyEvent e) { 
     System.out.println("Key typed: " + e.getKeyCode()); 
    } 

    public void keyPressed(KeyEvent e) { 
     System.out.println("Key pressed: " + e.getKeyCode()); 
    } 

    public void keyReleased(KeyEvent e) { 
     System.out.println("Key released: " + e.getKeyCode()); 
    } 

    public static void main(String[] args) { 
     new Scribble(); 
    } 
}