web-dev-qa-db-ja.com

JavaFXドロップダウンボタン

JavaFXで「ドロップダウンボタン」を作成するにはどうすればよいですか?

これまで私は目的のためにChoiceBoxを使用していましたが、今度はChoiceBoxに画像を割り当てる必要があります。

ChoiceBox.setGraphic()// Buttonsのように利用できません

なので、ドロップダウンボタンに変更する予定です。アイコンを設定できるように。

UIの設計にSceneBuilderを使用しています。

JavaFXを使用してドロップダウンボタンを作成する方法を検索するのに役立ちません。

5
user3164187

ChoiceBoxのように選択を保存する必要がない場合は、たとえば MenuButton コントロールを使用できます。

MenuButtonは、クリックまたは押すとContextMenuを表示するボタンです。

MenuButtonには graphicProperty があり、その基本クラスはLabeledです。

簡単な例

final Image image = new Image(getClass().getResource("cross_red.png").toExternalForm(), 20, 20, true, true);
MenuButton menuButton = new MenuButton("Don't touch this");
menuButton.setGraphic(new ImageView(image));
menuButton.getItems().addAll(new MenuItem("Really"), new MenuItem("Do not"));

これにより、次のようなボタンが生成されます:

enter image description here

注:ボタンが実際のボタンのように機能する必要がある場合は、MenuButtonから SplitMenuButton 。唯一の違いは、コントロールフィールドがボタン部分とドロップダウン部分に分割されていることです(したがって、ヘッダーにもアクションを割り当てることができます)。

SplitMenuButtonは、MenuButtonと同様に、メニューからMenuItemを選択するという概念と密接に関連しています。 MenuButtonとは異なり、SplitMenuButtonは、「アクション」領域と「メニューオープン」領域の2つの部分に分かれています。

ユーザーがアクション領域をクリックすると、SplitMenuButtonはButtonと同様に動作し、ButtonBase.onActionプロパティに関連付けられているものをすべて起動します。

8
DVarga