JAVA:事件監聽器之鍵盤監聽


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 }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM