一个鼠标事件 一个键盘事件 我用了鼠标事件 结果键盘事件无效 用了键盘事件 鼠标事件有效果

importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener... import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Random;

public class CopyOfDrawLine3 extends Frame {
Button b = null;
Random r = new Random();
ArrayList<Line> lines = new ArrayList<Line>();
Image offScreenImage;
static final int w=800, h=600 , x=300 , y =100 ;

public static void main(String[] args){
CopyOfDrawLine3 dl = new CopyOfDrawLine3();
dl.lunchFrame();
}

private void lunchFrame() {
setBounds(x,y,w,h);
this.setTitle("按钮画直线");
setVisible(true);
addWindowListener(new WindowAdapter(){

@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}

});

addKeyListener(new KeyMonitor());
b = new Button("直线");

setLayout(null);
add(b);
b.setBounds(350, 560, 100, 20);
b.addActionListener(new Moniter());
new Thread(new DrawLines()).start();
}

public void paint(Graphics g){
for(int i=0;i<lines.size();i++){
Line line = lines.get(i);
line.draw(g);
}
}

class Moniter implements ActionListener{
public void actionPerformed(ActionEvent e) {
Line line = new Line();
lines.add(line);
}
}

class KeyMonitor extends KeyAdapter{
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key){
case KeyEvent.VK_F1 :
System.out.println("F1按键有效");
lines.clear();
System.out.println(lines.size());
break;
case KeyEvent.VK_1 :
System.out.println("1按键有效");
}
}
}

class Line{
int x1 = r.nextInt(w);
int y1 = r.nextInt(h);
int x2 = r.nextInt(w);
int y2 = y1;
public void draw(Graphics g) {
g.drawLine(x1, y1, x2, y2);
}
}

class DrawLines implements Runnable{
public void run() {
try {
while(true){
Thread.sleep(50);
repaint();
}

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

【求原因】
展开
 我来答
francis373737
2012-04-22 · 超过24用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:64.2万
展开全部
很简单,你的键盘监听器是监听的对象时Frame这个,当你刚启动程序是,目标是在Frame上,而当你点击按钮时,目标放在了Button上了,键盘监听器你只添加给了Frame,没有添加到Button上,所以就没有效果了,你可以添加句b.addKeyListener(new KeyMonitor());就能解决问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tdcm9403
2012-04-22
知道答主
回答量:35
采纳率:0%
帮助的人:8.2万
展开全部
中如何写一个程序代码,利用到键盘和鼠标事件呢? import flash.events.addEventListener(mouseEvent:CLICK; function) 楼主有些问题请阅读帮助文档和
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式