Java

import  javax.swing.*;
import  java.awt.*;
import  java.awt.event.*;
 
public  class  FrameEvent  extends  JFrame  implements  KeyListener {
     JTextArea textarea =  new  JTextArea( 10 30 );
     private  JLabel status;
 
     public  FrameEvent() {
         super ( "KeyinEvent.java: " );
         Container c = getContentPane();
         c.setLayout( new  FlowLayout());
         setFocusable( true );
         textarea.setText( "请按任意键:" );
         c.add(textarea);
         addKeyListener( this );
         setSize( 350 300 );
         show();
         this .setDefaultCloseOperation( 3 );
     }
 
     public  void  keyPressed(KeyEvent e) {
         // String line1="按键:"+e.getKeyChar()+"\n";
         // String line2="a按键是否为Action键:"+e.isActionKey();
         // @SuppressWarnings("static-access")
         // String mKey=e.getKeyModifiersText(e.getModifiers());
         // String line3="是否按下Modifier键"+(mKey.equals("")?"否":"是,其键为"+mKey);
         // textarea.setText(line1+"\n"+line2+"\n"+line3+"\n");
         if  (e.getKeyCode() == KeyEvent.VK_SPACE) {
             System.out.println( "123" );
         }
         // char ch = e.getKeyChar();
         // status.setText(String.valueOf(ch) + "   " +(int)ch);
 
     }
 
     public  void  keyReleased(KeyEvent e) {
     }
 
     public  void  keyTyped(KeyEvent e) {
     }
 
     public  static  void  main(String args[]) {
         FrameEvent app =  new  FrameEvent();
     }
}
追问:
您好,我看了一下你的代码,你可否告诉我为什么不加上setFocusable(true);这句,就不能触发事件呢?
追答:
这是swing的焦点问题,JFrame 、JComponent、JLabel默认是不可以获得焦点,而且默认情况下,swing是把焦点分配给容器内可以获得焦点的第一个组件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值