有个问题问下大家,我现在一个画面上有许多panel,需要增加个功能:如果某个panel获得了焦点,此时我需要用键盘的上下左右来操作焦点移动,例如按下左键,焦点移动到左边那个panel上去,其他类似。请问这个如何操作呢?计划是注册个addKeyListener事件。

解决方案 »

  1.   

    //伪代码,有些方法自己查api
    class MyFrame extends Frame implements KeyListener{
    Panel[][] p=new Panel[3][3];//假设3*3个面板
    int x;
    int y;
       public MyFrame(){
         x=y=0;
         //循环i,j
         p[i][j] = new Panel();
         p[i][j].addKeyListener(this);
       }
       
       pubic void keyPressed(....){
          if(上) y--;
          else(下) y++;
          else(左) x--;
          else ...
          //控制x,y越界,回到0-2
          ....
          p[x][y].requestCursor();//获取焦点    }
    }
      

  2.   

     p[x][y].requestCursor();//获取焦点 
    这句改为p[x][y].requestFocus();了可以吧.
      

  3.   

    那些panel是不规则的,比如说一个大panel的上方有2个小panel。