-2

我正在尝试创建一个程序,其中图像在屏幕上,如果变量 keycode 等于键 VK_ESCAPE,它将使用 validate 方法从屏幕上删除图像。如何聚焦 keylistener 以便运行 if 语句并验证图像。我导入了正确的库并且没有错误?!

public void keyPressed(KeyEvent e){
    int keycode = e.getKeyCode();
    if(keycode == KeyEvent.VK_ESCAPE){
     scroll = new ImageIcon("").getImage();
     validate();
     e.consume();
    }
}
4

1 回答 1

3

你应该使用Key Bindings而不是主要问题的Key Listeners原因key listeners是你必须有焦点,除了在键绑定中你只将一个动作绑定到一个键上,在你绑定到所有的键监听器中。顺便说一句,您没有删除组件中的任何内容,您必须删除 image 然后调用revalidate().

教程如何使用键绑定

例子 :

AbstractAction escapeAction = new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
         myComponent.remove(img); // if you are not using label,if yes label.setImage(null); 
         revalidate();  // im not pretty sure about this 2 lines
         repaint(); //suggested by madProgrammer
    }};
 String key = "ESCAPE";
 KeyStroke keyStroke = KeyStroke.getKeyStroke(key);
 component.getInputMap().put(keyStroke, key);
 component.getActionMap().put(key, escapeAction);
于 2013-06-24T23:15:31.183 回答