//-------------------------------------------------
//Application1.java
//-------------------------------------------------package Dekn;import javax.swing.UIManager;
import java.awt.*;public class Application1 {
  boolean packFrame = false;  /**Construct the application*/
  public Application1() {
    Frame1 frame = new Frame1();
    //Validate frames that have preset sizes
    //Pack frames that have useful preferred size info, e.g. from their layout
    if (packFrame) {
      frame.pack();
    }
    else {
      frame.validate();
    }
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }
  /**Main method*/
  public static void main(String[] args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    new Application1();
  }
}  //-------------------------------------------------
//Frame1.java
//-------------------------------------------------package Dekn;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Frame1 extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  Label label1 = new Label();  /**Construct the frame*/
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  /**Component initialization*/
  private void jbInit() throws Exception  {
    //setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResource("[Your Icon]")));
    contentPane = (JPanel) this.getContentPane();
    label1.setAlignment(1);
    label1.setFont(new java.awt.Font("Dialog", 1, 30));
    contentPane.setLayout(borderLayout1);
    this.setResizable(false);
    this.setSize(new Dimension(370, 126));
    this.setTitle("Dekn  [email protected]");
    this.addKeyListener(new java.awt.event.KeyAdapter() {
      public void keyPressed(KeyEvent e) {
        this_keyPressed(e);
      }
    });
    contentPane.add(label1, BorderLayout.CENTER);
  }
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }  void this_keyPressed(KeyEvent e) {
    String s = null , s1 = null , s2 = null;
    int i,j;
    i = e.getModifiers();
    j = e.getKeyCode();
    s1 = e.getKeyModifiersText(i);
    s2 = e.getKeyText(e.getKeyCode());
    if (j == e.VK_CONTROL ||
        j == e.VK_SHIFT ||
        j == e.VK_ALT ||
        i == 0)
      s = s2;
    else
      s = s1 + " + " + s2;
    label1.setText(s);
  }}
Dekn
[email protected]

解决方案 »

  1.   

    field.addKeyListener(new KeyAdapter() {
                /**
                 * Invoked when a key has been typed.
                 * This event occurs when a key press is followed by a key release.
                 */
                public void keyTyped(KeyEvent e) {
                    System.out.println(e.getKeyModifiersText(e.getModifiers()));
                    System.out.println((int) e.getKeyChar());
                }            /**
                 * Invoked when a key has been pressed.
                 */
                public void keyPressed(KeyEvent e) {            }            /**
                 * Invoked when a key has been released.
                 */
                public void keyReleased(KeyEvent e) {            }
            });
      

  2.   

    上面的做法只能捕捉到一个按键响应。比如说按下一个Ctr+ c 时,由于先按下的是Ctr,则程序只能接受到一个Ctr的信息,下一个就忽略了,怎么办?