Это почти как клавиша Escape, которая также перенаправляется в меню, поэтому она автоматически закрывается при открытии.
В любом случае, правильный способ сделать это - использовать привязки клавиш, а НЕ KeyListener,Прочитайте мое вступление на Связывания клавиш , Используя предложение по ссылке, ваш код будет:
Action action = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
menu = new JPopupMenu();
menu.add("item1");
menu.add("item2");
Component component = (Component)e.getSource();
menu.show(component, component.getX(), component.getY());
}
};
String keyStrokeAndKey = "ESCAPE";
KeyStroke keyStroke = KeyStroke.getKeyStroke(keyStrokeAndKey);
txt.getInputMap().put(keyStroke, keyStrokeAndKey);
txt.getActionMap().put(keyStrokeAndKey, action);