2

JInternalFrameJDesktopPane のすべてのフレームの一番上にa をプッシュするにはどうすればよいですか?

4

6 に答える 6

3

grabFocus() と requestFocus() を試してください。そのうちの1つが機能するはずです。私は個人的に requestFocus() のみを使用しました。

于 2010-12-02T17:28:32.853 に答える
2

OPは、それが機能していないことに気づき、手動でsetSelected呼び出す必要がありました。activateFrameこれは、私が抱えていた の問題に似ていGTKLookAndFeelます。setSelected最終的にトリガーするために使用するようにすべて配線されたアプリケーションがありましたactivateFrame。Windows および Mac ネイティブのルック アンド フィールで問題なく動作しました。activateFrame自動的に呼び出されます。

Ubuntu では、LaF が選択されたシステムがGTKLookAndFeel何らかの理由でこれを呼び出していませんでしactivateFrameた。setSelectedエラーなどをスローしているようには見えませんでした。他の LaF が行っているように、呼び出しに取り組まなかっただけですactivateFrameGTKLookAndFeel互換性の問題だと思います。

結局、私はこれをパントし、禁止してGTKLookAndFeel、 に置き換えましたMetalMotif互換性のある動作もありました(しかし、それはとても醜いです...)。コードは次のようになります。

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
if (UIManager.getLookAndFeel() instanceof com.sun.java.swing.plaf.gtk.GTKLookAndFeel)
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
于 2011-07-08T22:14:07.727 に答える
2

JInternalFrame API を読み、「内部フレームの使用方法」に関する Swing チュートリアルへのリンクをたどってください。アクティブな内部フレームを「選択」する方法の実例が見つかります。

于 2010-12-02T18:19:58.887 に答える
2

このでは、 ajavax.swing.Actionを使用してメニューからフレームを選択しています。

于 2010-12-02T19:06:27.727 に答える
1

/* JInternalFrame メソッド setSelected(false) を呼び出して、現在の JInternalFrame を選択解除します。

*/次に、同じ方法を使用して新しい JInternalFrame を選択します。つまり、setSelected(true)

サンプルコード:

試してみてください{ jframe1.setSelected(false); jframe2.setSelected(真); }catch (PropertyVetoException ex) {}

于 2010-12-06T16:54:50.247 に答える
1

モーダル JInternalFrame を閉じる Zen(me) 氏の投稿を参照

于 2011-03-28T03:52:05.683 に答える