KYQ
KYQ

Reputation: 53

Move image using keyboard - Java

I wanted to move my image using keyboard arrow keys. when I pressed the arrow keys it moves accordingly to the direction. However, I need to click on the image before able to move it. May I know how to edit the code such that I do not need to click on the image before able to move it? I would also like to know how to make the image appear from the left once it reaches right and vice versa.

My codes are :

    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();
         }
     }

 }); 

Upvotes: 4

Views: 5936

Answers (3)

Andrew Thompson
Andrew Thompson

Reputation: 168845

Collect.requestFocusInWindow();

requestFocusInWindow()..

Requests that this Component get the input focus, if this Component's top-level ancestor is already the focused Window.

Make sure to call that only after the main window is visible and has the focus.

Upvotes: 3

Dave
Dave

Reputation: 5173

KeyListeners only work when the component which has the listener has focus. You are giving focus to what appears to be Collect by clicking on it. Then the listener works. You can add the listener to other things or force focus to remain on something like the outer frame by using a focus listener to regain focus whenever it is lost.

Upvotes: 1

mKorbel
mKorbel

Reputation: 109823

You have look at KeyBindings, otherwise you have to JComponent#setFocusable() that nest the Image, example for Moving Image

Upvotes: 4

Related Questions