如何在 JavaFX MenuItem 中嵌入节点?
javafxobject oriented programmingprogramming更新于 2025/4/13 23:52:17
菜单是呈现给用户的选项或命令列表。在 JavaFX 中,菜单由 javafx.scene.control.Menu 类表示,您可以通过实例化此类来创建菜单。
菜单项是菜单中的一个选项,它由 javafx.scene.control.MenuItem 类表示,该类是 Menu 类的超类。您可以将文本或图形显示为菜单项,并向其中添加所需的阳离子。
将节点设置为菜单项
MenuItem 类有一个名为 graphic 的属性,其类型为 Node;它为当前菜单项指定可选图形。您可以使用 setGraphic() 方法设置此属性的值。
要将节点嵌入为菜单项,您需要通过实例化相应的类来创建它的对象,并将其作为参数传递给 setGraphic() 方法。
示例
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.paint.Color; import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.CullFace; import javafx.scene.shape.DrawMode; import javafx.scene.shape.Sphere; import javafx.stage.Stage; public class NodeAsMenuItem extends Application { @Override public void start(Stage stage) { //绘制球体 Sphere sphere = new Sphere(); sphere.setRadius(12.0); sphere.setDrawMode(DrawMode.LINE); //设置其他属性 sphere.setCullFace(CullFace.BACK); sphere.setDrawMode(DrawMode.FILL); PhongMaterialmaterial = new PhongMaterial(); material.setDiffuseColor(Color.BROWN); sphere.setMaterial(material); //创建菜单 Menu fileMenu = new Menu("File"); //创建菜单项 MenuItem item = new MenuItem("Open"); //将滑块设置为菜单项 item.setGraphic(sphere); //将所有菜单项添加到菜单 fileMenu.getItems().addAll(item); //创建菜单栏并向其添加菜单。 MenuBar menuBar = new MenuBar(fileMenu); menuBar.setTranslateX(200); menuBar.setTranslateY(20); //设置舞台 Group root = new Group(menuBar); Scene scene = new Scene(root, 595, 200, Color.BEIGE); stage.setTitle("Menu"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }