在下面的方法中,当我单击按钮 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 。
答案 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);
}
});