21

私は のJPanel中に を持っていJFrameます。を登録しましたがKeyListener、これに基づいて を更新したいと考えていJPanelます。私が抱えている問題は、に焦点を合わせることができないため、JPanel機能しKeyListenerないことです。KeyListenerに登録して正常に動作したため、 が機能していることは既にわかってJFrameいます。現時点で私のコードは次のようになります。

myFrame.setFocusable(false);
myPanel.setFocusable(true);
myPanel.addKeyListener(myKL);
myFrame.add(myPanel);

以前にこのような問題に遭遇した人はいますか? これに関して私が見逃しているものはありますか?

PS:JPanel背景に画像を描画するだけなので、JPanel 自体に焦点を当てる必要があります。その中の何かではありません。

4

5 に答える 5

25

パネルがフォーカス可能であることを示していますが、パネルはフォーカスを求めていません。を使ってみてくださいmyPanel.requestFocus();

于 2010-01-25T20:16:53.353 に答える
7

を使用setFocusable(true)してからrequestFocusInWindow()。ただし、後者は、パネルを含むウィンドウが表示された後に実行する必要があります。そのためには、ウィンドウリスナーを登録requestFocusInWindow()し、ウィンドウでアクティブ化されたハンドラーコードを実行する必要があります。

注:具体的には、を呼び出した直後ではなく、ウィンドウsetVisible(true)表示された後です。

于 2010-01-26T02:04:15.750 に答える
2

私は時々同様の問題に直面します。場合によっては、フレーム内にあるパネル内の特定のコントロール (キーボード入力を送りたい入力ボックスなど) にフォーカスを設定またはリクエストする方がよい場合があることに気付きました。ペイン自体。

于 2010-01-25T21:26:02.643 に答える
2

試す

panel.setFocusable(true);
panel.setRequestFocusEnabled(true);

// some code here

panel.grabFocus();
于 2010-01-25T23:53:24.730 に答える