在线等!

解决方案 »

  1.   

    Toolkit toolkit = Toolkit.getDefaultToolkit(); toolkit.addAWTEventListener(capListener, AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK| AWTEvent.WINDOW_EVENT_MASK); 实现一个监听器: class CapListener implements AWTEventListener { public void eventDispatched(AWTEvent event) { } }
      

  2.   

    package com.fpg.example;import java.awt.AWTEvent;
    import java.awt.Toolkit;
    import java.awt.event.AWTEventListener;
    import java.awt.event.KeyEvent;import javax.swing.JFrame;
    import javax.swing.JRadioButton;
    import javax.swing.JTextField;public class WindowF1 extends JFrame{
    private Toolkit toolkit = Toolkit.getDefaultToolkit(); public WindowF1() {
    toolkit.addAWTEventListener(new CapListener(), AWTEvent.KEY_EVENT_MASK);
    JTextField jt1 = new JTextField();
    jt1.setBounds(30,30,60,20);
    JRadioButton jr1 = new JRadioButton();
    jr1.setBounds(60,60,20,20);
    getContentPane().setLayout(null);
    add(jt1);
    add(jr1);
    setSize(400, 300);
    setVisible(true);
    setDefaultCloseOperation(3);
    } public static void main(String args[]) {
    new WindowF1();
    } // toolkit
    // 实现一个监听器:
    class CapListener implements AWTEventListener {
    public void eventDispatched(AWTEvent event) {
    Object o = event;
    if(((KeyEvent)event).getKeyCode() == KeyEvent.VK_F1){
    System.out.println("F1");
    }
    }
    }}
      

  3.   

    KeyEvent类还有两个方法也常常被用到,那就是getKeyCode()与
    getKeyModifiersText(int modifiers).键盘上每一个按钮都有对应码(Code),可用来查知用户按了什么键,
    如[Shift]键code为16。利用getKeyCode()方法就可以得知这个码,不过读者要注意,这个方法在keyTyped()
    上是无法检测出来的,因为keyTyped()只管用户输入的字符,而不会管到键盘的对应码,算是处理比较高层
    事件的方法。也就是说keyTyped()方法是keyboad independent,因为不同的键盘可能有不同的对应码(如Windows
     U.S. keyboard与windows French keyboard就有不同的对应码)。因此你一定要将getKeyCode()方法写在
    keyPressed()或keyReleased()方法中才会有效,因为这两个方法是处理比较低层的方法。
      另外getKeyModifiersText()方法可返回修饰键的字符串,如返回“Shift”字符串或是“Ctrl+Shift”字符串,
    不过你要先传入modifiers参数。你可以直接使用getModifiers()方法来得到modifiers参数。这个方法是定义在
    InputEvent类中,而KeyEvent继承它,因此就能直接使用这个方法。同样,你必须将getKeyModifiersText()与
    getModifiers()方法放在keyPressed()或keyReleased()方法中才会有效。