3

クリックしてポップメニューを表示できるjwindow(常に一番上に設定)があります。ユーザーがウィンドウを右クリックすると、ポップ メニューが表示されますが、ユーザーが他のウィンドウ (Firefox など) をクリックしても、ポップ メニューは消えません。

jwindowにFocusListenerを追加して修正しようとしましたが、FocusListenerとオーバーライドを実装しました


    public void focusGained(FocusEvent e) {
    System.out.println("gain" );
    }

    public void focusLost(FocusEvent e) {
    System.out.println("lost" );
    }

しかし、イベントが呼び出されることはありません。私も次のことを試しました、


    addWindowFocusListener(new WindowAdapter() {
        public void windowGainedFocus(WindowEvent e) {
            System.out.println("gain 2" );
        }
        });

このイベントも呼び出されません。

この jwindows が持っているのは、画像を含む単一の JLabel だけです。

4

5 に答える 5

3

メモリからJWindowはフォーカス/ウィンドウイベントを受信しません。

于 2009-09-16T06:08:45.253 に答える
2

フォーカス可能にするには、 のようJWindowに親で を作成する必要があります。それを行うと、表示に設定すると自動的にフォーカスが得られることがわかるはずです。Framenew JWindow(parentFrame)

于 2012-06-26T15:29:40.410 に答える
2

setFocusableWindowState(true)aを呼び出して、JWindowフォーカス可能にすることを想定しています。しかし、その「まだ」では十分ではありません。フォーカス可能なコンポーネントも必要ですが、JWindowまだ動作させることができません。を使用JFrame setUndecorated()するのが最良の選択のようです。

于 2011-11-26T14:35:39.570 に答える
0

本当にポップアップ メニューを表示したい場合は、自分で実装するのではなく、JPopupMenu を使用する必要があります。

于 2009-09-16T05:10:40.583 に答える
0

あなたが何をしようとしているのか本当にわかりません。ポップアップを手動で非表示にしようとしている場合は、おそらく WindowListener を使用して windowDeactivated イベントを処理する必要があります。

于 2009-09-16T03:16:48.370 に答える