package t3;  import java.awt.*;
  import java.awt.event.*;
  import  javax.swing.*;
  public class KeyEventDemo extends JFrame implements KeyListener{
    static KeyEventDemo  frm=new KeyEventDemo(); 
    static JTextField tf=new JTextField(20);
    static JTextArea ta=new JTextArea("",5,20);
  
    
    public static void main(String args[]){
      frm.setSize(200,150);
      frm.setTitle("KeyEvent Demo");
      frm.setLayout(new FlowLayout(FlowLayout.CENTER));
      tf.addKeyListener(frm);  
      ta.setEditable(false);   
      frm.add(tf);      
      frm.add(ta);
      frm.setVisible(true); 
    }
    // 当tf组件触发KeyEvent事件时,根据事件的种类执行下列的程序代码
    public void keyPressed(KeyEvent e){   // 当按键按下时
      ta.setText("");
      ta.append("keyPressed() 被调用\n");
               
    }
    public void keyReleased(KeyEvent e){ // 当按键放开时
  
      ta.append("keyReleased() 被调用\n");
    }   
    public void keyTyped(KeyEvent e){    // 键入内容时
      ta.append("keyTyped() 被调用\n");
    }
  }  要求如下:
◣ 增加一个JTextArea,区域为10行20列。   ◣ 如果"a"键按下,则在新增加的JTextArea中显示“恭喜,你按下了a键”。
      ◣ 如果"b"键按下,则在新增加的JTextArea中显示“对不起,你按下了b键”。

解决方案 »

  1.   

    import java.awt.FlowLayout;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;public class KeyEventDemo extends JFrame implements KeyListener {
        /**
         * 
         */
        private static final long serialVersionUID = -9124455865998643315L;
        private static KeyEventDemo frm;
        private static JTextField tf;
        private static JTextArea ta;
        static {
    if (frm == null)
        frm = new KeyEventDemo();
    if (tf == null)
        tf = new JTextField(20);
    if (ta == null)
        ta = new JTextArea("", 5, 20);
        }    public static void main(String args[]) {
    frm.setSize(500, 300);
    frm.setTitle("KeyEvent Demo");
    frm.setLayout(new FlowLayout(FlowLayout.CENTER));
    tf.addKeyListener(frm);
    ta.setEditable(false);
    frm.add(tf);
    frm.add(ta);
    frm.setVisible(true);
        }    // 当tf组件触发KeyEvent事件时,根据事件的种类执行下列的程序代码
        public void keyPressed(KeyEvent e) { // 当按键按下时
    switch (e.getKeyCode()) {
    case KeyEvent.VK_A: {
        ta.append("恭喜,你按下了a键\r\n");
        break;
    }
    case KeyEvent.VK_B: {
        ta.append("恭喜,你按下了b键\r\n");
        break;
    }
    default: {
        return;
    }
    }    }    public void keyReleased(KeyEvent e) { // 当按键放开时
    // ta.append("keyReleased() 被调用\n");
        }    public void keyTyped(KeyEvent e) { // 键入内容时
    // ta.append("keyTyped() 被调用\n");
        }
    }
      

  2.   

    public void keyTyped(KeyEvent e) { // 键入内容时
        // ta.append("keyTyped() 被调用\n");
        }
    }
      

  3.   

    package t3;  import java.awt.*;
      import java.awt.event.*;
      import  javax.swing.*;
      public class KeyEventDemo extends JFrame implements KeyListener{
        static KeyEventDemo  frm=new KeyEventDemo(); 
        static JTextField tf=new JTextField(20);
        static JTextArea ta=new JTextArea("",5,20);
        static JTextArea x=new JTextArea("",10,20);
        // /////////////////////////////////////////////////////
    // ◣ 增加一个JTextArea,区域为10行20列。
    // /////////////////////////////////////////////////////
        
        public static void main(String args[]){
          frm.setSize(200,150);
          frm.setTitle("KeyEvent Demo");
          frm.setLayout(new FlowLayout(FlowLayout.CENTER));
          x.setEditable(false);
          tf.addKeyListener(frm);  
          
          
          ta.setEditable(false);   
          frm.add(tf);      
          frm.add(ta);
          frm.add(x);
          frm.setVisible(true); 
        }
        // 当tf组件触发KeyEvent事件时,根据事件的种类执行下列的程序代码
        public void keyPressed(KeyEvent e){   // 当按键按下时
          ta.setText("");
          ta.append("keyPressed() 被调用\n");
         if(e.getKeyChar()=='a')
          x.append("恭喜,你按下了a键"+"\n");
         if(e.getKeyChar()=='b')
             x.append("对不起,你按下了b键"+"\n");
       
         
          ///////////////////////////////////////////////////////
          //◣ 如果"a"键按下,则在新增加的JTextArea中显示“恭喜,你按下了a键”。
          //◣ 如果"b"键按下,则在新增加的JTextArea中显示“对不起,你按下了b键”。
          ///////////////////////////////////////////////////////
        }
        public void keyReleased(KeyEvent e){ // 当按键放开时
      
          ta.append("keyReleased() 被调用\n");
        }   
        public void keyTyped(KeyEvent e){    // 键入内容时
          ta.append("keyTyped() 被调用\n");
        }
      }