我的程序里有个键盘事件,按下Ctrl+数字键做一件事。其它数字键都可以响应,但是按Ctrl+主键盘的数字键6这个组合无效(没有响应),而Ctrl+小键盘的数字键6能响应。键盘事件第一行就是 System.out.println("按下键盘"+e.getKeyChar());
当我按数字6时输出:
  按下键盘6
当我按Ctrl+数字键1时输出:
  按下键盘?     (注:这个问号是Ctrl键)
  按下键盘1
但当我按下Ctrl+主键盘数字键6时输出:
  按下键盘?
  按下键盘?
第二个6没有被识别到,非常奇怪。
而我按下Ctrl+小键盘数字键6时输出:
  按下键盘?
  按下键盘6
是正常的。键盘事件代码很简单,不过整个程序有几千行,没法贴。
这个错误对我的程序有致命的影响,希望有有人帮我找出问题。谢谢。

解决方案 »

  1.   

    public void keyReleased(KeyEvent e){
    System.out.println((int)e.getKeyChar());
    }结果主键盘的6跟ctrl一样输出65536,所以输出如楼主所述的?,原因不详
      

  2.   

    如果楼主急需,就用
    System.out.println((char)e.getKeyCode());
    代替吧
      

  3.   

    用这个试试function keyDown()
    {
    if(window.event.altKey==true && window.event.keyCode==54)
    {
    alert("Alt和6键");
    }
    }
    document.onkeydown=keyDown;
    document.onselectstart=new Function("self.event.returnValue=false");<body oncontextmenu="window.event.returnValue=false" onselectstart="return false">
      

  4.   

    believefym(feng),你也可以重现这个问题,那可能是java编译器的bug.
    那个代替方法不行,getKeyCode()本来就是char类型,再转char没任何效果.
    yanhongaiwo() 我看不懂你的代码,感觉不是j2se标准的键盘事件代码.
    我模仿外国做的一个游戏,但他就可以处理Ctrl+6,不知道他怎么实现的.我可以改成按Alt+6或Shitf+6做为响应,但我觉得没有Ctrl键方便,按Alt还可能使焦点转到菜单栏.因此还是希望有人能帮忙解决.
      

  5.   

    上面有一些错误,按Shitf+数字键是行不通的.
      

  6.   

    我才发现 believefym(feng)说的是getKeyCode(),以为还是getKeyChar();
    getKeyCode()可以识别.我的失误.