Java面板中的组件如何键盘侦听 麻烦各位

importjava.awt.Color;importjava.awt.Frame;importjava.awt.Graphics;importjava.awt.Pane... import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class mover extends Frame{
public static void main(String ss[]){

mover s=new mover();
s.setVisible(true);
}
public Panel sf;
public class Node
{
int row;//行
int col;//列
}
public Node HB;
public mover(){
this.setBackground(new Color(202,234,72));
this.setBounds(0, 0, 500, 700);
this.setResizable(false);
this.setTitle("移动");

this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent arg0) {
super.windowClosing(arg0);
System.exit(0);
}
});
paintp();
itinstart();

this.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e) {

super.keyPressed(e);
if(e.getKeyCode()==KeyEvent.VK_LEFT)
HB.col--;
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
HB.col++;
}

}
);
}
public void paintp(){
sf=new Panel(){
public void paint(Graphics g){
g.setColor(new Color(211,91,255));
g.fillRect(HB.col, HB.row, 60, 20);
}

};
sf.setBounds(50,50,400,500);
sf.setBackground(new Color(255,255,175));
this.setLayout(null);
this.add(sf);
}
public void itinstart(){
HB=new Node();
HB.col=170;
HB.row=470;

}

}

我想让这个面板中的紫色那个长方体在键盘侦听下可以用左右键控制移动 不知道为什么不行 如果直接在窗体中画就可以用键盘侦听,所以我想问在面板中键盘侦听是不是还要加点什么??我是初学者
那两位说的去做还是动不了。。。
展开
 我来答
tianjigeng
2010-06-10 · TA获得超过593个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:0
展开全部
两个地方要改,一个addKeyListener的时候用sf,另一个最后要调用一下repaint。
修改后的部分如下:
sf.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

super.keyPressed(e);
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
HB.col--;
System.out.println("left key pressed");
}

if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
HB.col++;
System.out.println("right key pressed");
}
sf.repaint();
}

});

我这边试过了可以动的呀。
你运行程序后,鼠标点一下界面,让焦点移进去。
泥土中的露珠
2010-06-10 · TA获得超过2.7万个赞
知道小有建树答主
回答量:1136
采纳率:100%
帮助的人:489万
展开全部
简单

解释:
this.addKeyListener(new KeyAdapter(){/// 代码省略了}

上面的代码是监听键盘的,
因为你使用的是 this.addKxxx..
而不是使用的 Panel sf.addKeyListerner() 所以错了

this 默认是你的类,也就是继承了Frame的mover ,
给谁加监听,谁才能听,你刚刚可能是copy的代码吧,加错了改改就可以

改成 sf.addKeyListener(new KeyAdapter(){///

绝对没错!分给我!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式