如题所示,我用的是DELL INSPITION 1525,现发现Java无法识别删除键(按下删除键后生成的e.getKeyCode() == KeyEvent.KEY_LOCATION_UNKNOWN),求助原因和解决方案import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Test extends JFrame
{
private Test()
{
String[] s = {"1", "2", "3"};
JList wordList = new JList(s);
wordList.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_DELETE)
{
System.out.println("delete pressed!");
}
else
{
                                              System.out.println(e.getKeyCode());//按下删除键后输出为0(KEY_LOCATION_UNKNOWN)
System.out.println("not VK_DELETE!");
}
}
});
add(wordList);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args)
{
new Test();
}
}

解决方案 »

  1.   

    在bios里去改改键盘的类型试试。
    这个估计和硬件有关。
      

  2.   

    把keyTyped
    改为
    keyPressedtry again....
      

  3.   

        /**
         * The "key typed" event.  This event is generated when a character is
         * entered.  In the simplest case, it is produced by a single key press.  
         * Often, however, characters are produced by series of key presses, and 
         * the mapping from key pressed events to key typed events may be 
         * many-to-one or many-to-many.  
         */
        public static final int KEY_TYPED = KEY_FIRST;jdk源码里面说:KEY_TYPED是用来识别输入a character的,delete没有输入,当然unknown
      

  4.   

    e.getKeyCode() 直接打印返回值看看