JavaFX SplitMenuButton

时间:2020-01-09 10:36:40  来源:igfitidea点击:

JavaFX SplitMenuButton控件可以显示用户可以选择的菜单选项列表,以及选择菜单选项后用户可以单击的按钮。 JavaFX SplitMenuButton可以显示或者隐藏菜单项。当在SplitMenuButton中单击一个小箭头按钮时,通常会显示菜单项。 JavaFX SplitMenuButton控件由类javafx.scene.control.SplitMenuButton表示。这是JavaFXSplitMenuButton的屏幕截图:

创建SplitMenuButton

必须先创建一个JavaFX实例,然后才能使用它。这是创建JavaFXSplitMenuButton的示例:

SplitMenuButton splitMenuButton = new SplitMenuButton();

设置SplitMenuButton文本

我们可以通过setText()方法设置SplitMenuButton的按钮文本。这是设置JavaFXSplitMenuButton的按钮文本的示例:

splitMenuButton.setText("Click here!");

设置SplitMenuButton菜单项

我们可以通过getItems()返回的MenuMenu集合来设置菜单项以显示在JavaFX SplitMenuButton的菜单部分中。每个菜单项都由一个" MenuItem"对象表示。这是在JavaFXSplitMenuButton上设置三个菜单项的示例:

MenuItem choice1 = new MenuItem("Choice 1");
MenuItem choice2 = new MenuItem("Choice 2");
MenuItem choice3 = new MenuItem("Choice 3");

button.getItems().addAll(choice1, choice2, choice3);

响应菜单项选择

在响应选定菜单项时,JavaFXSplitMenuButton与JavaFX MenuButton的工作方式相似。为了响应对JavaFX SplitMenuButton中菜单项的选择,我们必须在添加到SplitMenuButton中的每个MenuItem上设置一个动作侦听器。这是通过在JavaFXSplitMenuButtonMenuItem实例上设置动作侦听器来响应菜单项选择的示例:

MenuItem choice1 = new MenuItem("Choice 1");
MenuItem choice2 = new MenuItem("Choice 2");
MenuItem choice3 = new MenuItem("Choice 3");

choice1.setOnAction((e)-> {
    System.out.println("Choice 1 selected");
});
choice2.setOnAction((e)-> {
    System.out.println("Choice 2 selected");
});
choice3.setOnAction((e)-> {
    System.out.println("Choice 3 selected");
});

在此示例中,动作侦听器仅将文本打印到控制台。在实际的应用程序中,我们可能希望存储有关选择了什么操作的信息,或者执行其他操作,而不是仅将文本打印到控制台。

响应按钮点击

我们可以通过在其上设置动作侦听器来响应JavaFXSplitMenuButton按钮的单击。这是在JavaFXSplitMenuButton上设置动作侦听器的示例:

splitMenuButton.setOnAction((e) -> {
    System.out.println("SplitMenuButton clicked!");
});

本示例使用Java Lambda表达式作为操作侦听器。单击按钮后,文本" SplitMenuButton clicked!"将被打印到控制台。

SplitMenuButton与MenuButton,ChoiceBox和ComboBox

我们可能想知道JavaFXSplitMenuButton和JavaFX MenuButton,JavaFX ChoiceBox和JavaFX ComboBox之间有什么区别。我将在下面尝试解释。

" SplitMenuButton"和" MenuButton"控件是按钮。这意味着,它们旨在让应用程序响应菜单项之一上的单击,或者对于" SplitMenuButton"而言,是主按钮或者菜单项之一上的单击。当我们希望在用户单击/选择菜单项时立即执行操作时,请使用这两个控件之一。当其中一项选择的执行频率高于其余选项时,请使用" SplitMenuButton"。将按钮部分用于选择最多的选项,将菜单项用于选择较少的选项。

" ChoiceBox"和" ComboBox"仅在内部存储用户在菜单项中做出的选择。它们不适用于在选择菜单项时立即采取的措施。在最终必须单击"确定"或者"取消"按钮之前,用户必须做出多种选择的形式使用这些控件。单击这些按钮中的一个时,我们可以读取从" ChoiceBox"或者" ComboBox"中选择的菜单项。