addKeyListener
public void addKeyListener(KeyListener l)
添加指定的按鍵偵聽器,以接收發自此組件的按鍵事件。如果 l 為 null,則不會拋出異常並且不執行動作。
java.awt.event
接口 KeyListener
用於接收鍵盤事件(擊鍵)的偵聽器接口。旨在處理鍵盤事件的類要么實現此接口(及其包含的所有方法),要么擴展抽象 KeyAdapter
類(僅重寫有用的方法)。
然后使用組件的 addKeyListener
方法將從該類所創建的偵聽器對象向該組件注冊。按下、釋放或鍵入鍵時生成鍵盤事件。然后調用偵聽器對象中的相關方法並將該 KeyEvent
傳遞給它。
方法摘要 | |
---|---|
void |
keyPressed(KeyEvent e) 按下某個鍵時調用此方法。 |
void |
keyReleased(KeyEvent e) 釋放某個鍵時調用此方法。 |
void |
keyTyped(KeyEvent e) 鍵入某個鍵時調用此方法。 |
——摘自:JDK6API
例子:
1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 public class KeyDemo 5 { 6 //定義該圖形中所需的組件的引用 7 private Frame f; 8 private Button bt; 9 private TextField tf; 10 11 //方法 12 KeyDemo()//構造方法 13 { 14 madeFrame(); 15 } 16 17 public void madeFrame() 18 { 19 f = new Frame("My Frame"); 20 21 //對Frame進行基本設置。 22 f.setBounds(300,100,600,500);//對框架的位置和大小進行設置 23 f.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));//設計布局 24 25 bt = new Button("My Button"); 26 tf = new TextField(20); 27 28 //將組件添加到Frame中 29 f.add(tf); 30 f.add(bt); 31 32 //加載一下窗體上的事件 33 myEvent(); 34 35 //顯示窗體 36 f.setVisible(true); 37 } 38 39 private void myEvent() 40 { 41 f.addWindowListener(new WindowAdapter()//窗口監聽 42 { 43 public void windowClosing(WindowEvent e) 44 { 45 System.out.println("窗體執行關閉!"); 46 System.exit(0); 47 } 48 }); 49 bt.addKeyListener(new KeyAdapter()//鍵盤監聽按鈕 50 { 51 public void keyPressed(KeyEvent e) 52 { 53 if(e.getKeyCode()==KeyEvent.VK_ESCAPE) 54 System.exit(0); 55 //組合鍵 56 else if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER) 57 System.exit(0); 58 else System.out.println(e.getKeyChar()+"..."+KeyEvent.getKeyText(e.getKeyCode())); 59 } 60 61 }); 62 tf.addKeyListener(new KeyAdapter() 63 { 64 public void keyPressed(KeyEvent e) 65 { 66 int code = e.getKeyCode(); 67 if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)) 68 { 69 System.out.println(code+"..."+"是非法的"); 70 e.consume(); 71 } 72 } 73 }); 74 } 75 76 public static void main(String[] agrs) 77 { 78 new KeyDemo(); 79 } 80 }