2

私はJLayeredPane2つの層を持っています

最初のレイヤーはJPanelラッピングImageです。JPanel2番目のレイヤーは、ResizableRectangleと呼ばれる拡張され、を実装する別のオブジェクトKeyListenerです。

メソッドをオーバーライドしましたKeyPressedが、イベントを受信せずkeyPressed、メソッドが呼び出されません。

を設定しsetFocusEnable(true)て使用grabFocus()しましたがrequestFocus()requestFocusInWindows()すべてfalseを返します。

JFrameがロードされた後にTabキーを押すFocusと、必要なパネルに移動し、リスナーがイベントを取得することがわかりました。

にを追加しましたKeyListenerJLayeredPane、正常に動作しますが、layeredPaneではなくパネルにリスナーを追加したいという問題があります。

4

1 に答える 1

2

Image または ImageIconJLabelに配置してから、JLabel MouseListenerに追加してください。

あとは電話するだけ

EventQueue.invokeLater(new Runnable() {

     @Override
     public void run() {
        myPanel.grabFocus();
        myPanel.requestFocus();//or requestFocusInWindows();          
     }
});
于 2011-07-25T06:53:10.920 に答える