在JFrame中无法监听键盘

本文分享了在Java Swing中使用JFrame进行键盘事件监听的经验,通过实例代码演示如何正确获取键盘输入,解决监听无响应的问题,适用于初学者和开发者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在使用JFrame中想监听键盘事件,但是一直都无响应,经Google提醒,将焦点放到JFrame上,成功实现监听键盘

十分感谢!@struct

代码如下:

import javax.swing.JFrame;
import java.awt.*;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;


public class TEST_ extends JFrame{
    public static void main(String args[]) {
        TEST_ test = new TEST_();
        test.GameHome();
    }


        //启动窗体
        public void GameHome(){
            JFrame jframe = new JFrame();   //构造JFrame对象
//        jframe.setLayout(new FlowLayout());
            Container container = jframe.getContentPane();  //在窗体中添加一个面板操作,
            jframe.setSize(800,600);    //设置窗体长宽为200 200
            jframe.setTitle("TankWar Version 0.1");     //设置窗体标题
//        jframe.setVisible(true);    //设置窗体可见
            jframe.show();  //设置窗体可见
            jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭功能
            jframe.setLocationRelativeTo(null);     //设置打开GUI时在屏幕中间
            container.setBackground(Color.black);   //设置背景色为黑色

            //添加“Tank2010”图片
            ImageIcon imageicon = new ImageIcon("Pic/BackGround/BackGround.png");   //将背景图片的地址传递给imageicon
            JLabel jlabel = new JLabel(imageicon);  //将imageicon设置成JLabel控件
            jframe.add(jlabel);     //将控件添加到窗口中
            jlabel.setBounds(0,0,800,200);  //设置图片的x、y坐标、宽、高度
            //版权信息


            JLabel copyright = new JLabel("Copyright ZhongJQing ©2015-2020");
            jframe.add(copyright);  //将版权信息添加到窗口中
            JLabel copyright1 = new JLabel("Test TankWar Version 0.1 By ZhongJQing");
            jframe.add(copyright1);
//        copyright1.setFont(new Font("宋体",1,20));
            copyright.setBounds(250,500,400,20);   //设置文字的x、y坐标和宽度、高度
            copyright1.setBounds(250,520,500,20);
            copyright.setForeground(Color.white);
            copyright1.setForeground(Color.white);

//            addKeyListener(new KeyboardListener());
//            copyright.addKeyListener(new KeyboardListener());
            jframe.addKeyListener(new KeyboardListener());
        }
        
        //加入键盘监听器
        class KeyboardListener extends KeyAdapter{
            public void keyPressed(KeyEvent e){
                TEST_.Go(e);
            }
        }
        static void Go(KeyEvent e){
        switch(e.getKeyCode()){
            case KeyEvent.VK_ENTER:
                GameWindow gameWindow = new GameWindow();
                gameWindow.startFrame();
                break;
            case KeyEvent.VK_J:
                GameWindow gameWindow1 = new GameWindow();
                gameWindow1.startFrame();
                break;
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值