メニュー(Menu)について

GUIアプリケーションでは、最も原始的なものを除いて、メニューを必要とします。
  メニューによって、どんなGUIでも使い方を拡張することができます。メニューというのは動的に表示される選択リストであり、使用可能なファンクション(通常はコマンドと呼ばれます)、あるいはGUIが宣言するファンクションに対応します。皆さんが想像される通り、メニューを作るには、メニュー・ウィジェットを使います。
  メニューは、他のメニューや、menuItemを含むことができます(menuItemは、メニュー、つまりメニューの階層構造を含むことができます)。
  またmenuItemは、実行できるコマンドや、選択したGUI状態を表します。
  メニューは、アプリケーションの(つまりシェルの)メニュー・バーに関連付けることもできれば、アプリケーション・ウィンドウ上の自由な位置に配置できるポップ・アップ・メニューとすることもできます。
  メニューには、次のように相互排他的な3つのスタイルのうち、どれか1つのスタイルを定義する必要があります。

  • BARは、シェルに対するメニュー・バーとして動作します。
  • DROP_DOWNは、メニュー・バー、あるいはメニュー・アイテムから『垂れ下がり』ます。
  • POP_UPは、シェルからポップ・アップしますが、特定なコンテキストの制御に依存して動作します。
    またメニューは、オプションとして次のようなスタイルもサポートします。
  • NO_RADIO_GROUPは、ラジオ・グループとしては動作しません。メニューが、RADIOスタイルのアイテムを含む場合に、このスタイルを使います。
  • LEFT_TO_RIGHTあるいはRIGHT_TO_LEFTは、テキストの方向を選択します。
    menuItemには、次のように相互排他的な5つのスタイルのうち、どれか1つのスタイルを定義する必要があります。
  • CHECKは、常に選択されています(つまりチェックされた状態にあります)。
  • CASCADEは、ドロップ・ダウンすべきメニューを含んでいます。
  • PUSHは、瞬時に動作させるためのボタンとして動作します。
  • RADIOは、CHECKと同じように動作しますが、(このタイプを持つ)1つのアイテムだけが選択されます。
  • SEPARATORは、アイテム・グループ間を隔てるセパレーター(通常は縦線です)として動作し、機能は何も持っていません。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
        Menu menubar = new Menu(shell, SWT.BAR);
        shell.setMenuBar(menubar);

        MenuItem item1 = new MenuItem(menubar, SWT.CASCADE);
        item1.setText("File");

        MenuItem item2 = new MenuItem(menubar, SWT.CASCADE);
        item2.setText("Help");

        Menu menu = new Menu(item1);
        item1.setMenu(menu);

        MenuItem item1_1 = new MenuItem(menu, SWT.PUSH);
        item1_1.setText("Push");

        MenuItem item1_2 = new MenuItem(menu, SWT.CASCADE);
        item1_2.setText("Cascade");

        Menu submenu = new Menu(item1_2);
        item1_2.setMenu(submenu);

        MenuItem item1_2_1 = new MenuItem(submenu, SWT.PUSH);
        item1_2_1.setText("SubItem Push");

        MenuItem item4 = new MenuItem(menu, SWT.CHECK);
        item4.setText("Check");

        MenuItem item5 = new MenuItem(menu, SWT.SEPARATOR);

        MenuItem item6 = new MenuItem(menu, SWT.RADIO);
        item6.setText("Radio1");

        MenuItem item7 = new MenuItem(menu, SWT.RADIO);
        item7.setText("Radio2");