如何通过转义键关闭JTextArea

时间:2019-03-06 22:46:42

标签: java swing jtextarea keylistener

在下面的方法中,当我单击按钮 helpBut 时,将显示 JTextArea 。显示帮助文本(用 JTextArea 编写的文本: helpText )之后,我想通过按关闭该文本退出键。我尝试使用 addKeyListener (贝洛)方法,但是它没有用。

public void clickButton (JButton helpBut, JTextArea helpText)
{
   helpBut.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            JPopupMenu helpPopup = new JPopupMenu();
            helpPopup.add(helpText);
            if (!helpPopup.isVisible()) {
                helpPopup.show(helpBut,20,20);
            } else {
                helpPopup.setVisible(false);
            }
        }
    });
   helpText.addKeyListener(new KeyAdapter() {
         @Override
         public void keyPressed(KeyEvent e) {
            if(helpText.isVisible()) {
               if(e.getKeyCode() == KeyEvent.VK_ESCAPE)
                 helpText.setVisible(false);
               }
           }
    });
}

我发现只有在单击 JtextArea 时,编译器才会调用方法 addKeyListener

1 个答案:

答案 0 :(得分:0)

非常感谢,我使用了诸如snowy_1803的建议之类的按键绑定,而且效果很好。

helpPopup.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "closeJTextArea");
    helpPopup.getActionMap().put("closeJTextArea", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            helpPopup.setVisible(false);
        }
    });