【一个简单的GUI问题】为什么frame中加入Button后原来的键盘事件就不能用了???

【如下程序按“s”后有反应,出现“ok”字样】importjava.awt.Button;importjava.awt.Frame;importjava.awt.even... 【如下程序按“s”后有反应,出现“ok”字样】
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Huhu {
public static void main(String[] args) {
FrameText f = new FrameText();
}

}
class FrameText extends Frame
{
FrameText()
{

add(b);
setBounds(30,30,300,300);
Motion m = new Motion();
addKeyListener(m);
setVisible(true);
}
}

class Motion extends KeyAdapter
{

public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_S)
System.out.println("ok");
}

}

【但加入一个Button后按'S'就没反应了】
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Huhu {
public static void main(String[] args) {
FrameText f = new FrameText();
}

}
class FrameText extends Frame
{
FrameText()
{
Button b = new Button();
add(b);
setBounds(30,30,300,300);
Motion m = new Motion();
addKeyListener(m);
setVisible(true);
}
}

class Motion extends KeyAdapter
{

public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_S)
System.out.println("ok");
}

}
嘿嘿~~真详细 谢谢您哈~~~内牛满面啊~~~
展开
 我来答
Irreappearable
2010-02-17 · TA获得超过4956个赞
知道大有可为答主
回答量:1423
采纳率:25%
帮助的人:3143万
展开全部
你都评价这么高了,怎么也不选作最佳答案啊,我要内牛满面了额。。
=============================================================
(⊙o⊙)…你运行过你的程序难道没有发现其实整个界面被那个button全部占用了么?看不出来的话在上面单击几下,应该会比较明显~

其实么,原理也很简单,你想你只是调用了add,你又没告诉他放在那里,放多大,再说你整个窗口也就add了一个按钮,其他什么组件都没添加,所以Frame的默认布局管理器就把这个按钮撑满了整个窗口
==============================================================
因为你整个界面都被button占用了,当然frame获得的事件都会分发(dispatch)给Button处理了咯~

如果你写b.addKeyListener(m);就可以看到打印出来额字符了

另外啊,朋友你的窗口按大叉关不掉,你每次运行完不觉得难过的么。。。= =
加个事件吧~
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
dispose();
}
});
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式