我将问题提炼了,编了个实验的小窗口将注释部分变成可执行的话,键盘就响应不了了我想问大家,容器只要设置了布局,就不行了吗
package Test;import java.awt.*;
import java.awt.event.*;public class Frame2 extends Frame{

public Frame2(){
// this.add(new Button("试验"),BorderLayout.EAST);
this.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
System.out.println("djlkjakjfl");
super.keyPressed(e);
}

});
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
this.setBounds(0, 0, 600, 700);
this.setVisible(true);
}

public static void main(String args[]){
Frame2 f2=new Frame2();
}}有没有什么方法能够即安排布局管理器,又能读到键盘响应,我本来是设想在中间放游戏,底栏放一排按钮现在只能将按钮的现实都去掉,在屏幕上,用文字提醒,可以用键盘做哪些事情了

解决方案 »

  1.   

    可以让程序运行后强制让Frame获取焦点
    应该是requestFocus方法吧
      

  2.   


    我没用过这个方法,你能不能示范一下,我看API,也不知道咋用就是让按钮显示,然后键盘也能读入
      

  3.   

    this.setFocusable(true); 得到焦点就可以了
      

  4.   


    en 试了第一次一下可以,按了按钮之后焦点又在键盘上了,然后我将键盘的注册监听的内容设为将焦点放到Frame上,结果也不行,这Frame里面设成whlie 循环也不行不知道怎么办,难道专门设一个线程,不断地设他?,我觉得原理和while一样,应该也不行吧
    广大高手,帮忙啊
      

  5.   


    package com.lee.test;import java.awt.*;
    import java.awt.event.*;public class Frame2 extends Frame{
        
        public Frame2(){
         Button b1 = new Button("试验");
         add(b1,BorderLayout.EAST);
         //add(new Button("试验"),BorderLayout.EAST);
        
        
         b1.addKeyListener(new KeyAdapter(){ //注意此处为b1添加键盘响应
         public void keyPressed(KeyEvent e) {
             System.out.println("djlkjakjfl");
                super.keyPressed(e);
            } 
        });    
         this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }    
        });
        this.setBounds(0, 0, 600, 700);
        this.setVisible(true);
        }
        
        public static void main(String args[]){
            Frame2 f2=new Frame2();
        }}
      

  6.   

    1.将键盘响应添加到按钮上问题解决,不知道这样是不是你想要的
    2.楼主请注意你的代码格式,并适当缩进,虽然这问题很小,但是这会让人觉得你的代码很丑,代码写的很不专业,也许我的也不是很好看。
    3.建议您别总是喜欢省略代码例如://add(new Button("试验"),BorderLayout.EAST);这些代码写写也挺好的,省略了自己明白,别人不好看,虽然这样写很短小,匿名类除外哦。
    希望你满意。