import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class KeyDemo extends KeyAdapter implements ActionListener{
    JFrame f=null;
    JLabel label=null;
    JTextField tField=null;
    String keyString="";
    private void doShutDownWork()
    {
 
Runtime.getRuntime().addShutdownHook(new Thread() 
{ public void run() 
{
try {
FileWriter fw = new FileWriter("d:\\t.log");
System.out.println("Im going to end");
fw.write("the application ended! " + (new Date()).toString());

fw.close();
}
catch (IOException ex) 
{
System.out.println("Wrong!");
} }
});

}

    
    public KeyDemo(){
     doShutDownWork();
       f=new JFrame("KeyEventDemo");
       Container contentPane=f.getContentPane();
       contentPane.setLayout(new GridLayout(3,1));
       label=new JLabel();
       tField=new JTextField();
       tField.requestFocus();
       tField.addKeyListener(this);
       JButton b=new JButton("清除");
       b.addActionListener(this);
       contentPane.add(label);
       contentPane.add(tField);
       contentPane.add(b);
       f.pack();
       f.show();
       f.addWindowListener(
            new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                  System.exit(0);
                }
            } 
       );
    }
    public void actionPerformed(ActionEvent e){
       keyString="";
       label.setText("");
       tField.setText("");
       tField.requestFocus();       
    }
    public void keyTyped(KeyEvent e){
       char c=e.getKeyChar();
       if (c=='o'){
          JFrame newF=new JFrame("新窗口");
                 newF.setSize(200,200);
                 newF.show();
       }
       keyString=keyString+c;
       label.setText(keyString);
    }
    public static void main(String[] args){
        new KeyDemo(); 
    }
}
java有没有类似c++的钩子?java只有一个jvm结束的hook,我想要一个能在后台纪录我电脑键盘的动作的程序,哪位高手愿意赐教,小妹先行谢过!