按键监听类KeyListener及适配器改良方案

 导包导的恶心,真是马上要对notepad累觉不爱了,好在顺利导完。。


监听按键信息
//source code

import java.awt.Color ;
import java.awt.Font ;
import java.awt.GridLayout ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.awt.event.WindowListener ;
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
import java.awt.event.KeyEvent ;
import java.awt.event.KeyListener ;
import javax.swing.JFrame ;
import javax.swing.JButton ;
import javax.swing.JLabel ;
import javax.swing.JPanel ;
import javax.swing.JTextField ;
import javax.swing.JTextArea ;
import javax.swing.JScrollPane ;
import javax.swing.JPasswordField ;

class MyHandleKey extends JFrame implements KeyListener
{
    JTextArea text = new JTextArea() ;
    public MyHandleKey()
    {
        super.setTitle("按键精灵") ;
        JScrollPane sc = new JScrollPane(text) ;
        sc.setBounds(5,5,300,200) ;
        super.add(sc) ;
        text.addKeyListener(this) ;
       
        super.addWindowListener(new WindowAdapter()
        {
           public void WindowClosing(WindowEvent e)
           {
               System.exit(1) ;
           }
        }) ;
       
        super.setSize(400,400) ;
        super.setVisible(true) ;
    }
   
    public void keyPressed(KeyEvent e)    //按键被按下
    {
        text.append(" "+KeyEvent.getKeyText(e.getKeyCode())+" 键被按下
") ;
    }
   
    public void keyReleased(KeyEvent e)     //按键松开
    {
        text.append(" "+KeyEvent.getKeyText(e.getKeyCode())+"被松开
") ;
    }
   
    public void keyTyped(KeyEvent e)
    {
        text.append("输入的内容是:"+e.getKeyChar()+"
") ;
    }
} ;

class Tester
{
   public static void main(String args[])
   {
      MyHandleKey mhk = new MyHandleKey() ;
   }
} ;

与鼠标监听同样的问题,这样写代码太冗余,下面提供适配器改良

import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.awt.event.WindowListener ;
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
import java.awt.event.KeyEvent ;
import java.awt.event.KeyAdapter ;   //ferfect
import java.awt.event.KeyListener ;
import javax.swing.JTextArea ;
import javax.swing.JFrame ;
import javax.swing.JScrollPane ;
import javax.swing.JPasswordField ;

class MyHandleKey extends JFrame
{
    JTextArea text = new JTextArea() ;
    public MyHandleKey()
    {
        super.setTitle("按键精灵") ;
        JScrollPane sc = new JScrollPane(text) ;
        sc.setBounds(5,5,300,200) ;
        super.add(sc) ;
        text.addKeyListener(new KeyAdapter()    //再次应用Adapter
        {
            public void keyPressed(KeyEvent e)
            {  
                //text.setText("") ;
                text.append(KeyEvent.getKeyText(e.getKeyCode())+" 被按下
") ;
            }
        }) ;
       
        super.addWindowListener(new WindowAdapter()
        {
           public void WindowClosing(WindowEvent e)
           {
               System.exit(1) ;
           }
        }) ;
       
        super.setSize(400,400) ;
        super.setVisible(true) ;
    }
   
} ;

class Tester
{
   public static void main(String args[])
   {
      MyHandleKey mhk = new MyHandleKey() ;
   }
} ;


原文地址:https://www.cnblogs.com/emoji/p/4436800.html