A. java 鍵盤監聽事件為什麼需要點一下窗口
看下來應該是鍵盤「先要進入某個可輸入文字的組件中」,通常點擊窗口後 JFrame 會嘗試把鍵盤焦點恢復到之前焦點從這個 JFrame 窗體離開時當時焦點所在的那個組件上,如果當時沒有輸入組件接收焦點的話,就會自動重新計算第一個可接收輸入焦點的組件。然後之後的鍵盤事件就會自動發送到這個輸入組件上了。因此,當只是激活當前窗體的 JFrame 比如滑鼠點了標題欄而不是在 JFrame 的 Content Pane 的區域內,那麼輸入焦點並不會自動恢復。我們需要在 JFrame 的 Content Pane 中點擊一次。
要了解一點,Windows 編程中圖形組件有兩種,一種是 Window 窗體(包括 JFrame, JDialog, Frame, Dialog) 它們是直接與 Windows 操作系統打交道的,它的標題欄實際上與操作系統直接相關,比如最大化最小化後被當前窗體遮擋的應用程序窗體需要重畫,第二種是 JPanel, JTextField 之類的 Window 內的組件。
焦點點擊在 Window 窗體型組件時有額外的事情需要做的。
B. JAVA中設置鍵盤事件監聽者的方法是什麼
方法一:從控制台接收一個字元,然後將其列印出來
importjava.io.*;
publicstaticvoidmain(String[]args)throwsIOException{
System.out.print("EnteraChar:");
chari=(char)System.in.read();
System.out.println("yourcharis:"+i);
}
雖然此方式實現了從鍵盤獲取輸入的字元,但是System.out.read()只能針對一個字元的獲取,同時,獲取進來的變數的類型只能是char,當我們輸入一個數字,希望得到的也是一個整型變數的時候,我們還得修改其中的變數類型,這樣就顯得比較麻煩。
方法二:從控制台接收一個字元串,然後將其列印出來。在這個題目中,我們需要用到BufferedReader類和InputStreamReader類
importjava.io.*;
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Stringstr=null;
System.out.println("Enteryourvalue:");
str=br.readLine();
System.out.println("yourvalueis:"+str);
}
這樣我們就能獲取我們輸入的字元串。
方法三:這種方法我認為是最簡單,最強大的,就是用Scanner類
importjava.util.Scanner;
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("請輸入你的姓名:");
Stringname=sc.nextLine();
System.out.println("請輸入你的年齡:");
intage=sc.nextInt();
System.out.println("請輸入你的工資:");
floatsalary=sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+" "+"年齡:"+age+" "+"工資:"+salary);
}