Även om de flesta behöver få indata från användaren hanteras ganska lätt i svängning via standardkomponenter - till exempel få text genom en JTextField komponent - ibland är det nödvändigt att få de exakta knapptryckningar från användaren . Kanske en specifik tangentkombination kommer att orsaka en viss handling , eller kanske du vill undvika vissa knapptryckningar från att ha sin standard effekt , såsom att låta endast alfabetiska tecken i en textruta . Oavsett scenario , få nyckeln användaren tryckte är enkel . Saker du behöver Review, Java SDK
Integrated Development Environment , såsom Eclipse eller NetBeans , rekommenderas men krävs inte
Visa fler instruktioner
1
Skapa en enkel klass som skapar och visar en JFrame för nu :
java.awt.Dimension
import;
import java.lang.reflect.InvocationTargetException ,
javax.swing.JFrame
import ;
import javax.swing.SwingUtilities ,
public final class KeyPressTester genomför Runnable {
public static void main ( String [] args ) kastar InterruptedException , InvocationTargetException {
SwingUtilities.invokeAndWait ( ny KeyPressTester ( ) ) ;
}
@ Åsidosätt
public void run ( ) {
frame = new JFrame ( " Tangenttryckning Tester " ) ;
frame.setSize ( ny Dimension ( 800 , 600 ) ) ;
frame.setVisible ( true ) ;
}
privata JFrame frame ,
}
2
Ändra run ( ) metoden för att lägga till en keyListener till ramen med följande genomförande :
frame.addKeyListener ( ny keyListener ( ) {
@ Åsidosätt
public void keyTyped ( KeyEvent e ) {
}
@ Åsidosätt
allmänheten ogiltigförklara keyReleased ( KeyEvent e ) {
}
@ Åsidosätt
public void keyPressed ( KeyEvent e ) {
System.out.println ( " Key karaktär : " + e.getKeyChar ( ) + " , Nyckel kod : " + KeyEvent.getKeyText ( e.getKeyCode ( ) ) ) ;
}
} ) ;
Billiga 3
kompilera och exekvera programmet . Om du trycker på en knapp när ramen har fokus , bör du se konsol utdata som beskriver den knapp du tryckte , inklusive både den faktiska texten tecknet ( om tillgängligt ) och texten av nyckeln , t.ex. Shift , Ctrl , Backsteg , etc. Addera