本次实例实现了一个小球的控制移动,键盘上的上下左右四个键控制小球移动的方向,这里只是一个小小的键盘监听器的雏形,希望会为以后的学习有些好的提示。
程序运行时要用鼠标点击一下窗体,从而激活窗体,这样才能通过上下左右键来控制小球的移动
第一个类:
package keylistenermove;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class mainTest extends JFrame {
private keyListenerTest klTest = new keyListenerTest();
public void showUI() {
this.setTitle("梅竹寒香");
this.setSize(500, 500);
this.setLocation(200, 200);
this.setDefaultCloseOperation(3);
// 窗口打开时默认最大化
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setResizable(true);
this.setVisible(true);
this.setLayout(new BorderLayout());
this.getContentPane().add(klTest, BorderLayout.CENTER);
// 启动上下左右方向键盘按键控制四个线程
directionThread directionthread = new directionThread(klTest);
directionthread.start();
}
public static void main(String args[]) {
mainTest maintest = new mainTest();
maintest.showUI();
}
}
第二个类:
package keylistenermove;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class keyListenerTest extends Canvas implements
java.awt.event.KeyListener {
//小球的初始位置
public static int x = 250, y = 250;
//用来记录键盘按下时的键盘键所对应的ASCII码
public static int i;
//用来记录键盘松开时的键盘键所对应的ASCII码
public static int j;
public void keyTyped(KeyEvent e) {
}
//得到每次按下的键盘键的ASCII码
public void keyPressed(KeyEvent e) {
i = e.getKeyCode();
}
public void keyReleased(KeyEvent e) {
//得到每次松开的键盘键的ASCII码
j = e.getKeyCode();
//这个是用来上下左右四个方向线程的while中的if判断,如果没有下面的代码,当按一下键盘键的时候,就无法停止小球移动
if (j == 37 || j == 38 || j == 39 || j == 40) {
i = -1;
}
}
public keyListenerTest() {
this.addKeyListener(this);
}
public void paint(Graphics g) {
//画出小球,
g.fillOval(x - 10, y - 10, 20, 20);
}
}
第三个类:
package keylistenermove;
public class directionThread extends Thread {
private keyListenerTest klTest = new keyListenerTest();
public directionThread(keyListenerTest klTest) {
this.klTest = klTest;
}
public void run() {
while (true) {
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
//实现小球的移动
if (keyListenerTest.i == 38) {
keyListenerTest.y -= 1;
klTest.repaint();
}
if (keyListenerTest.i == 39) {
keyListenerTest.x += 1;
klTest.repaint();
}
if (keyListenerTest.i == 37) {
keyListenerTest.x -= 1;
klTest.repaint();
}
if (keyListenerTest.i == 40) {
keyListenerTest.y+= 1;
klTest.repaint();
}
}
}
}
分享到:
相关推荐
键盘监听记录器
这是一个很好的键盘监听器,支持监控各种系统键(如Alt,Ctrl等)。它还支持将记录保存为Excel表文件或文本文件,便于日后查看。
在开发时遇到一个问题,需要对软键盘的打开与关闭操作进行监听。 但是由于android不直接提供对软键盘打开与关闭操作的监听器,所以必须自己来写一个...原理是通过对OnGlobalLayoutListener()来实现对软键盘的状态监听器
该程序由python生成,运行该程序,会监听键盘的操作,并记录到txt文件。txt文件存在程序的运行目录下。
键盘监听器与鼠标监听器借鉴.pdf
本资源分为两部分,其一是基于HOOK的是先键盘记录功能的DLL文件源代码;其二是将上述DLL注入指定进程的源代码.相关文档请在百度中搜索“远程注入DLL实现进程隐藏以及键盘记录器”查询
使用Qt封装的支持Windows、Linux的跨平台全局鼠标、键盘事件监听器库
用Hook(即钩子)技术编写的应用程序添加到Windows的任务栏的指示区中就能够 很好的达到这个目的。...的具体实现分别对这两部分进行详细论述。 一、Hook(钩子)的实现: Hook是应用程序在Microsoft Windows
主要给大家介绍了关于java监听器实现和原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
具体原理请看本人的原创文章:基于易语言的键盘监听器(仅供学习) 文章链接:https://blog.csdn.net/weixin_45400394/article/details/105923515 本文件仅供学习!
JAVA事件监听器的四种实现方式,条理清晰,简明易懂,看过就学会
C++实现远程键盘监听
用监听器实现在线人数统计,过滤器实现页面自动编码 非法字符过滤
在构造函数中,创建一个KeyListener监听器,用于监听键盘输入事件。 在KeyListener的keyPressed方法中,调用movePlayer方法来移动玩家。 在movePlayer方法中,根据键盘输入更新玩家的位置,并确保玩家不会超出窗口的...
当然你也可以测试监听效果,双击运行程序,然后敲击键盘,虽然默认运行时窗体是隐藏的,但在任务管理器中应用程序选项卡中可以看到名为工程1的程序再运行,点击结束任务即可。注意不是结束record.exe进程,而是在...
Servlet监听器的概念 各种类型的Servlet事件监听器的使用方法 监听器的配置方法
配置Oracle监听器 配置Oracle监听器
Android中采用Service实现电话监听器并将监听到的内容上传到服务器案例!
主要介绍了Java设计模式之监听器模式,结合实例形式较为详细的分析了java设计模式中监听器模式的概念、原理及相关实现与使用技巧,需要的朋友可以参考下
当你将一个类用作事件监听器时,你已经设置好一个特定的事件类型,它会用该类进行监听。接下来的操作是:一个匹配的监听器必须被加入到该组件中 组件被创建之后,可以在组件上调用如下方法来将监听器与它联系起来 ...