忍者ブログ

≪ 前の記事

次の記事 ≫

  • [PR]

    ×

    [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

    comments

  • FXMLでメニューの作成

    FXMLを使ってメニューを作成します。


    拍手[1回]



    メニューにも複数種類があり、
    ・メニューを一列に表示する「メニューバー」
    ・メニューを一つのボタンにまとめてしまう「メニューボタン」
    ・右クリックをした時に表示される「コンテキストメニュー」

    あとはそれらに付随して「メニューアイテム」などが存在します。
    メニューアイテムにも色々種類があるのでまとめておきたいと思います。


    MenuBar				メニューバー
    ・Menu				メニュー
    ・MenuItem			メニューアイテム
    ・MenuButton			「メニューボタン」
    ・SplitMenuButton		「メニュー」+「ボタン」
    ・SeparatorMenuItem		メニュー間の仕切り
    ・RadioMenuItem		単一選択式メニューアイテム
    ・CheckMenuItem		複数選択式メニューアイテム
    ・ContextMenu			ポップアップメニュー(右クリックメニュー)
    ・CustomMenuItem		別のFXMLファイルを読み込む
    


    MenuBar

    もはや説明不要とも思われるメニューを配置するためのバー。
    一般的にはウィンドウ上部に配置されていることが多い。
    因みに下部に配置されているのはステータスバーと呼ばれます。

    Menu

    メニューバー等に設置するアイテム。
    メニューアイテムとの違いは子要素を持てること。作ろうと思えば、親>子>孫>曾孫....と延々とメニューの中にメニューを作れる。



    MenuItem

    メニュー等に設置するアイテム。
    メニューとの違いは子要素を持てないこと。



    MenuButton

    メニューを設置できるボタン
    メニューバーと違って画面上の好きなところに配置できるのが利点。
    最近「三」←こんな形のメニューボタンを見ることが増えた気がします。
    スマートフォンが台頭する中で、狭い画面をより有効に使うために考案されたのでしょうか。

    <MenuButton text="メニューボタン">
    	<items>//ここを<menus>にするとエラーになってしまう
    		<Menu text="メニュー1">
    			<items>
    				<MenuItem text="メニューアイテム1"/>
    				<MenuItem text="メニューアイテム2"/>
    			</items>
    		</Menu>
    		<Menu text="メニュー2"/>
    	</items>
    </MenuButton>
    


    SplitMenuButton

    メニューボタンと似ているが、ボタン部分とメニュー部分にニ分されているという違いがある。
    ボタン部分をクリックすれば通常のボタンとして機能し、メニュー部分をクリックすればメニューボタンとしてメニューが展開される。

    <SplitMenuButton text="メニューボタン">
    	<items>//ここを<menus>にするとエラーになってしまう
    		<Menu text="メニュー">
    			<items>
    				<MenuItem text="メニューアイテム1"/>
    				<MenuItem text="メニューアイテム2"/>
    				<MenuItem text="メニューアイテム3"/>
    				<MenuItem text="メニューアイテム4"/>		
    			</items>
    		</Menu>
    	</items>
    </SplitMenuButton>
    
    


    SeparatorMenuItem

    メニューの間に仕切りをいれるためのアイテム。

    <MenuBar>
    	<menus>
    		<Menu text="メニュー">
    			<items>
    				<MenuItem text="メニューアイテム1"/>
    				<MenuItem text="メニューアイテム2"/>
    				<MenuItem text="メニューアイテム3"/>
    				<SeparatorMenuItem/>
    				<MenuItem text="メニューアイテム4"/>		
    			</items>
    		</Menu>
    	</menus>
    </MenuBar>
    


    RadioMenuItem

    複数択一式のメニューアイテム
    (例)メニューを表示しますか?
       →「はい」「いいえ」など、同時に両立できない選択肢を使用するのに有効。

    <MenuBar>
    	<menus>
    		<Menu text="メニュー">
    			<items>
    				<fx:define>
    					<ToggleGroup fx:id="group1"/>
    				</fx:define>
    				<RadioMenuItem text="選択肢1" toggleGroup="$group1"/>
    				<RadioMenuItem text="選択肢2" toggleGroup="$group1"/>
    				<RadioMenuItem text="選択肢3" toggleGroup="$group1"/>
    				<RadioMenuItem text="選択肢4" toggleGroup="$group1"/>		
    			</items>
    		</Menu>
    	</menus>
    </MenuBar>
    


    CheckMenuItem

    複数選択式のメニューアイテム
    (例)表示するメニューを選んでください
       →「メニューA」「メニューB」など、同時に両立できる選択肢を使用するのに有効。

    <MenuBar>
    	<menus>
    		<Menu text="メニュー">
    			<items>
    				<CheckMenuItem text="選択肢1"/>
    				<CheckMenuItem text="選択肢2"/>
    				<CheckMenuItem text="選択肢3"/>
    				<CheckMenuItem text="選択肢4"/>		
    			</items>
    		</Menu>
    	</menus>
    </MenuBar>
    


    ContextMenu

    ポップアップメニューのことで、右クリックした時に表示されるメニューなんかが代表的。
    SceneBuilderで色々試してみたところ、LabelやTextAreaなどのコンテンツには設定できるが、PaneやVBoxなどのコンテナには設定できなかった。
    どういったルールなのかは不明なので可・不可の一覧を後々作成したいと思う。

    設定可能:Label、TextArea、GridPane、ScrollPaneなど
    設定不可:Pane、VBox、FlowPane、WebViewなど

    <TextArea text="テキストエリア">
    	<contextMenu>
    		<ContextMenu>
    			<items>
    				<MenuItem text="メニューアイテム1"/>
    				<MenuItem text="メニューアイテム2"/>
    				<MenuItem text="メニューアイテム3"/>
    				<MenuItem text="メニューアイテム4"/>		
    			</items>
    		</ContextMenu>
    	</contextMenu>
    </TextArea>
    


    CustomMenuItem

    カスタマイズできるメニューアイテム。
    自由にノードを組み込むことができるため、有用性は高い気がする。
    下記の例ではチェックボックスとスライダーをメニューに表示させてみた。

    hideOnClickプロパティをfalseにすれば、そのノードを弄っている間はメニューが非表示にならないようになる。

    <MenuBar>
    	<menus>
    		<Menu text="メニュー">
    			<items>
    				<CustomMenuItem>
    					<content>
    						<CheckBox text="チェックボックス" />
    					</content>
    				</CustomMenuItem>
    				<CustomMenuItem hideOnClick="false">
    					<content>
    						<Slider />
    					</content>
    				</CustomMenuItem>
    				<MenuItem text="メニューアイテム"/>
    				<MenuItem text="メニューアイテム"/>		
    			</items>
    		</Menu>
    	</menus>
    </MenuBar>
    

    0 comments

Comment