这个是我挖出KEYPRESSED事件的代码,这个能显示我的键盘事件确实可用啊/*
* 创建日期 2004-12-22
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
import javax.swing.*;
import java.awt.event.*;
/**
* @author canuo
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class snaketest {
int key = 38;
public snaketest(){
JFrame frame = new JFrame();
frame.addKeyListener(new keylisten(key));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,200);
frame.show();
} public static void main(String[] args) {
new snaketest();
}
}
class keylisten extends KeyAdapter{
int keys;
public keylisten(int i){
keys = i;
}
public void keyPressed(KeyEvent ke){
int keycode = ke.getKeyCode();
switch(keycode){
case 38: if (keys != 40) keys = 38;break;
case 40: if (keys != 38) keys = 40;break;
case 37: if (keys != 39) keys = 37;break;
case 39: if (keys!=37) keys = 39;break;
}
System.out.println(keys);
}
}
* 创建日期 2004-12-22
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
import javax.swing.*;
import java.awt.event.*;
/**
* @author canuo
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class snaketest {
int key = 38;
public snaketest(){
JFrame frame = new JFrame();
frame.addKeyListener(new keylisten(key));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,200);
frame.show();
} public static void main(String[] args) {
new snaketest();
}
}
class keylisten extends KeyAdapter{
int keys;
public keylisten(int i){
keys = i;
}
public void keyPressed(KeyEvent ke){
int keycode = ke.getKeyCode();
switch(keycode){
case 38: if (keys != 40) keys = 38;break;
case 40: if (keys != 38) keys = 40;break;
case 37: if (keys != 39) keys = 37;break;
case 39: if (keys!=37) keys = 39;break;
}
System.out.println(keys);
}
}
解决方案 »
- java udp Socket接收包时,怎样把不可显的字符转换成16进制
- java.sql.Types 标识一般 SQL 类型
- 用java编写一个关于局域网内文件备份的程式 ( 本人接触JAVA 刚一段时间 )
- 定义xml问题!
- 大家帮我看看这个程序~
- 我有两个类一个是ActionForm一个是pojo,这两个类里的数据完全相同,想要两个类中数据呼唤用get,set方法一个一个的写太麻烦,有没有什么
- 初学者请教连接SQLServer2000数据库问题
- 在applet中使用jdbc访问access数据库的问题。急
- 高分求助:Thinking in java快看完了,大家给推荐本书吧
- 一个很菜的问题:怎样使JComboBox的编辑框文字颜色成为蓝色。
- 在Linux上面一个Java程序怎样执行另一个Java程序?谢谢!
- 非常酷的电子图书下载站
当FRAME上有控件的时候,接收键盘事件的是有焦点的控件,而不是FRAME了!!
* Created on 2004-12-22
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package test;/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class snake implements ActionListener
{ JFrame frame;
javax.swing.Timer timer;
int num = 4;
JButton[] btn = new JButton[80];
int key = 39; //38~40表示左上右下键值~
public snake()
{
frame = new JFrame();
Container con = frame.getContentPane();
con.setLayout(null);
frame.addKeyListener(new keylisten(key));
timer = new javax.swing.Timer(500, this);
for (int i = 1; i < num; i++)
{
btn[i] = new JButton();
btn[i].setBounds(100, 250 + i * 20, 20, 20);
con.add(btn[i]);
}
btn[0] = new JButton();
btn[0].setSize(20, 20);
addbutton(con);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(405, 350);
frame.setResizable(false);
frame.setVisible(true);
timer.start();
timer.setRepeats(true); } void addbutton(Container c)
{
num = num + 1;
int x = ((int) (Math.random() * 20)) * 20;
int y = ((int) (Math.random() * 15)) * 20 + 50;
for (int i = 1; i < num - 1; i++)
{
if (btn[i].getX() == x & btn[i].getY() == y)
{
num = num - 1;
addbutton(c);
}
else
{
btn[num - 1] = new JButton();
btn[num - 1].setBounds(x, y, 20, 20);
}
}
btn[num - 1].addKeyListener(new keylisten(key));
c.add(btn[num - 1]);
} public static void main(String args[])
{
new snake(); } public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() == timer)
{
switch (key)
{
case 38 :
move(1);
break;
case 40 :
move(2);
break;
case 37 :
move(3);
break;
case 39 :
move(4);
break;
}
}
} public void move(int d)
{
switch (d)
{
case 1 :
btn[0].setLocation(btn[1].getX(), btn[1].getY() - 20);
for (int i = num - 2; i > 0; i--)
{
btn[i].setLocation(btn[i - 1].getX(), btn[i - 1].getY());
}
break; case 2 :
btn[0].setLocation(btn[1].getX(), btn[1].getY() + 20);
for (int i = num - 2; i > 0; i--)
{
btn[i].setLocation(btn[i - 1].getX(), btn[i - 1].getY());
}
break; case 3 :
btn[0].setLocation(btn[1].getX() - 20, btn[1].getY());
for (int i = num - 2; i > 0; i--)
{
btn[i].setLocation(btn[i - 1].getX(), btn[i - 1].getY());
}
break; case 4 :
btn[0].setLocation(btn[1].getX() + 20, btn[1].getY());
for (int i = num - 2; i > 0; i--)
{
btn[i].setLocation(btn[i - 1].getX(), btn[i - 1].getY());
}
break;
}
}}class keylisten extends KeyAdapter
{
int keys;
public keylisten(int i)
{
keys = i;
}
public void keyPressed(KeyEvent ke)
{
int keycode = ke.getKeyCode();
switch (keycode)
{
case 38 :
if (keys != 40)
keys = 38;
break;
case 40 :
if (keys != 38)
keys = 40;
break;
case 37 :
if (keys != 39)
keys = 37;
break;
case 39 :
if (keys != 37)
keys = 39;
break;
}
System.out.println(keys); }
}