我正在为工作构建库存管理系统,当我点击该项目时,让SplitMenuButton显示MenuItem会遇到很多麻烦。我在互联网上找不到关于'SplitMenuButton'的更多信息,并且尝试过JustButton也没有运气。例如,默认文本是“部门”,我希望它在选择该菜单项时显示“无菌”,或者在选择该菜单项时显示“设施”。
我已经尝试在运行#buildDataAseptic方法时创建一个新的SplitMenuButton实例和setText(“无菌”),但这仍然不起作用。
我的fxml代码是:
<SplitMenuButton mnemonicParsing="false" prefHeight="25.0" prefWidth="217.0" text="Department" textAlignment="CENTER">
<items>
<MenuItem fx:id="asepticMenuItem" mnemonicParsing="false" onAction="#buildDataAseptic" text="Aseptic" />
<MenuItem fx:id="generalMenuItem" mnemonicParsing="false" onAction="#buildDataGeneral" text="General" />
<MenuItem fx:id="facilitiesMenuItem" mnemonicParsing="false" onAction="#buildDataFacilities" text="Facilities" />
</items>
</SplitMenuButton>
任何帮助都非常appreacitead,谢谢!
答案 0 :(得分:0)
正如其他人所指出的,ComboBox是您用例的更好选择。
这是一个自包含的例子。首先是FXML:
<?import javafx.scene.control.ComboBox?>
<?import javafx.collections.FXCollections?>
<?import java.lang.String?>
<ComboBox xmlns:fx="http://javafx.com/javafx/null">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Aseptic" />
<String fx:value="General" />
<String fx:value="Facilities" />
</FXCollections>
</items>
</ComboBox>
带注释的应用程序:
package sample;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.stage.Stage;
public class Main extends Application {
public void start(Stage primaryStage) throws Exception {
ComboBox<String> comboBox = FXMLLoader.load(getClass().getResource("test.fxml"));
// Create an observable property for the selection
SimpleStringProperty selected = new SimpleStringProperty();
// Bind the property to the comboBox
selected.bindBidirectional(comboBox.valueProperty());
// Set initial value
selected.set("Facilities");
// React to changes
selected.addListener((observable, oldValue, newValue) -> {
// newValue contains the new selection, update database
System.out.println(newValue);
});
primaryStage.setScene(new Scene(comboBox));
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
一般建议:不要因为你花了很多时间而继续使用SplitMenuButton。将此视为一种学习体验。如果你不学会放手和重构,你永远不会创造出好的软件:)