把你的代码按照你的意思改动了一下,应该可以满足你的要求:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyEventDemo extends JFrame implements ActionListener, KeyListener {
JTextField txt1;
JButton btnOK;
JPanel pnlMain;
public KeyEventDemo() {
pnlMain = new JPanel();
setContentPane(pnlMain);
txt1 = new JTextField(10);
btnOK = new JButton("确认");
txt1.addKeyListener(this); //应该是在 TextField 里添加键盘监听事件
btnOK.addActionListener(this);//在按钮上添加事件监听
pnlMain.setLayout(new BorderLayout());//添加布局器
pnlMain.add(txt1,BorderLayout.NORTH); //TextField 布局在上方
pnlMain.add(btnOK,BorderLayout.SOUTH); //Button 布局在下方
setTitle("好啊");
setVisible(true);//viersible() 函数应该放在最后
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
char c = e.getKeyChar();
if (c == 'o') {
System.out.println("快捷键 " ◆ e.getKeyChar() ◆ " 按下" );
txt1.setText("收到,呵呵");
}else{
System.out.println("普通键 " ◆ e.getKeyChar() ◆ " 按下" );
public void actionPerformed(ActionEvent event){
System.out.println("按钮按下");
public void keyPressed(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样
public void keyReleased(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样
public static void main(String[] args) {
new KeyEventDemo();
额,抽象类其实就是定义了一些接口但又没有去实现的类,这些类定义了接口等它的子类来实现,如果它的子类没有实现这些接口,那么这些子类也是抽象类.抽象类是不能用 new 的方式产生的.
你似乎问错了,应该问接口是啥子东西,接口是....一大堆的东西好难策清楚,看看下面的链接吧,会受益良多的:
this.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
else if(e.getKeyCode()==KeyEvent.VK_LEFT)
});
这里这样改就ok了,不过你这个程序还有好多问题呢.
public void paint(Graphics g){
repaint();
这里面还要加一个repaint();方法,要不看不出移动的,问题太多改不完,你问的问题我算是解决了,嘿嘿,给分吧,有什么问题可以hi我.
"仅有一个焦点组件能够接收KeyEvent.要使一个组件成为焦点组件,需要将属性isFocusable设置为true."
-----------------------------------------
Ps:小细节,上下弄反了.y轴向下递增.
-----------------------------------------------------
修改方法之一见注释
package?baidu;
import?java.awt.event.*;
import?java.awt.*;
import?javax.swing.*;
public?static?void?main(String[]?args){
mg.setFocusable(true);??//设置为焦点组件!!!
add(mg);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
private?int?x,y;
this.x?=?x;
this.y?=?y;
public?void?paint(Graphics?g){
super.paint(g);
g.setColor(Color.BLUE);
g.fillOval(x,y,10,10);
public?void?move(int?a,int?b){
x?◆=?a;
y?◆=?b;
public?void?keyPressed(KeyEvent?e){
if(e.getKeyCode()?==?KeyEvent.VK_UP){
}else?if(e.getKeyCode()?==?KeyEvent.VK_DOWN){
}else?if(e.getKeyCode()?==?KeyEvent.VK_RIGHT){
}else?if(e.getKeyCode()?==?KeyEvent.VK_LEFT){
System.out.println("ERROR!!!");
move(0,0);
以上就是土嘎嘎小编为大家整理的java键盘监听源代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!