2012-01-03 3 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') и используйте ее в образцах кода. –

ответ

4

Вы должны смотреть на KeyBindings, в противном случае вы должны JComponent#setFocusable() что гнездо Image, пример для Moving Image

+0

+1 для привязки клавиш. Вот пример (здесь) (http://stackoverflow.com/a/5797965/230513). – trashgod

3
Collect.requestFocusInWindow(); 

requestFocusInWindow() ..

Просит, чтобы этот компонент ge t входной фокус, , если предком верхнего уровня этого компонента уже сфокусированное окно.

Обязательно позвоните, только после того, как главное окно будет видно и имеет фокус.

1

KeyListeners работает только в том случае, когда компонент, который имеет listener has focus. Вы сосредотачиваетесь на том, что кажется Collect, щелкнув по нему. Затем слушатель работает. Вы можете добавить слушателя к другим вещам или заставить фокус оставаться на чем-то наподобие внешнего кадра, используя прослушиватель фокуса, чтобы восстановить фокус, когда он потерян.

Смежные вопросы