2012-01-03 13 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

あなたは​​3210を見て、そうでなければ、JComponent#setFocusable()に持っている巣Image、例えばMoving Image

+0

+1キーバインディング。関連する例があります[ここ](http://stackoverflow.com/a/5797965/230513)。 – trashgod

3
Collect.requestFocusInWindow(); 

requestFocusInWindow() ...

このComponentが要求するこのコンポーネントの最上位の祖先がの場合は、入力フォーカスがすでにのフォーカスされたウィンドウに表示されます。

メインウィンドウが表示されてフォーカスがある状態でのみ呼び出してください。

1

KeyListenersは、listener has focusのコンポーネントがある場合にのみ機能します。あなたは、それをクリックすることによって、収集されるように見えるものに焦点を当てています。その後、リスナーが動作します。他のものにリスナーを追加したり、フォーカスが失われたときにフォーカスを取り戻すためにフォーカスリスナーを使用して、外側のフレームのようなものにフォーカスを強制的に残すことができます。

関連する問題