5

JMenuとJCheckBoxMenuItemを組み合わせて、次のことができるようにすることを計画しています。(1)この新しいコンポーネントのインスタンスを含むポップアップメニュー。(2)この新しいコンポーネントには、左側にチェックボックスがあり、右側に展開して他のサブメニュー(通常のJMenuなど)を表示することができます。

私はいくつか質問がありました:

まず、私は車輪の再発明をしていますか?/これは以前に行われたことがありますか?

次に、swingが拡張ComponentクラスのUIクラスを取得する方法をどのように知っているかを理解しようとしていますか?(たとえば、JMenuにはそのために使用される文字列uiClassIDメンバーがあることがわかりますが、正確なクラス名ではありません... UIDefaultsでHashTableルックアップにデバッグしました)

4

1 に答える 1

2
  1. ユーザーがチェックボックス付きのJMenuを見るのは混乱すると思います(私が正しく理解していれば、これをJMenuBarに直接入れたいと思います)。これまであまり頻繁に行われたことはないと思いますが、それには理由があります:)

  2. 使用されるUIクラスは、実際のルックアンドフィールによって異なります。javax.swing.plaf.MenuItemUIのサブクラスを参照してください

Swingアーキテクチャの全容は、ここで説明されています:http: //java.sun.com/products/jfc/tsc/articles/architecture/

ルックアンドフィールの実装は、抽象plafUIクラスごとに具体的なサブクラスを提供します。たとえば、WindowsのルックアンドフィールはWindowsButtonUI、WindowsScrollBarUIなどを定義します。コンポーネントがUIデリゲートをインストールするとき、現在のデフォルトのルックアンドフィールに適切な具体的なクラス名を動的に検索する方法が必要です。この操作は、コンポーネントのgetUIClassID()メソッドによってプログラムでキーが定義されているハッシュテーブルを使用して実行されます。慣例では、これらのキーにplaf抽象クラス名を使用します。

編集:これをポップアップメニューに入れたい場合は、JPopupMenuがJComponentであることに注意してください。したがって、通常のJCheckBoxを含め、何でもそこに置くことができます。例はここにあります:http ://www.javarichclient.com/do-more-with-jpopupmenu/

于 2012-09-06T21:17:41.490 に答える