В моем методе ниже, JTextArea будет отображаться при нажатии на кнопку helpBut .После отображения текста справки (текст, написанный на JTextArea : helpText ), я хотел бы закрыть этот текст, нажав клавишу escape .Я попытался использовать метод 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);
}
}
});
}
Я выяснил, что компилятор вызывает метод addKeyListener только если я нажимаю на JtextArea .