2012-01-03 61 views
4

我想使用键盘箭头键移动图像。当我按下箭头键时,它会相应地朝着方向移动。但是,我需要点击图片才能移动它。我可否知道如何编辑代码,以便在移动图像之前不需要单击图像?我也想知道如何让图像从左侧出现,一旦到达右侧,反之亦然。使用键盘移动图像 - Java

我的代码是:

Collect.addKeyListener(new KeyAdapter() { 
     public void keyPressed(KeyEvent ke) 
     { 
     if(ke.getKeyCode() == KeyEvent.VK_LEFT) 
      { 
      Collect.setLocation(Collect.getX()-8,Collect.getY()); 
      repaint(); 
     } 
     if(ke.getKeyCode() == KeyEvent.VK_RIGHT) 
      { 
      Collect.setLocation(Collect.getX()+8,Collect.getY()); 
      repaint(); 
     } 
    } 
}); 
    Collect.addMouseListener(new MouseAdapter() 
    { 
    public void mouseClicked(MouseEvent me) 
     { 
     if(me.getClickCount() == 1) 
      { 
      boolean dd = Collect.isOptimizedDrawingEnabled(); 
      boolean ff = Collect.requestFocusInWindow(); 
      repaint(); 
     } 
    } 

}); 
+1

1)为了更好地提供帮助,请发布[SSCCE](http://sscce.org/)。 2)请学习常用的Java命名法(例如'Collect' - >'collect')并将其用于代码示例中。 – 2012-01-03 17:50:32

回答

4

你必须看看​​3210,否则你必须JComponent#setFocusable()筑巢的Image,例如为Moving Image

+0

+1键绑定。有一个相关的例子[这里](http://stackoverflow.com/a/5797965/230513)。 – trashgod 2012-01-03 18:47:08

3
Collect.requestFocusInWindow(); 

requestFocusInWindow() ..

请求该组件ge t输入焦点,如果这个组件的顶级祖先是已经是的聚焦窗口。

请务必在主窗口可见并且有焦点之后调用它。

1

KeyListeners只在具有listener has focus的组件时才起作用。您正在关注点击它看起来似乎是“收集”的内容。然后听众的作品。您可以将侦听器添加到其他事物中,或通过使用焦点侦听器在焦点丢失时重新获得焦点来强制焦点保持在外框之类的东西上。