JavaFX使用CustomMenuItem、MenuButton、SplitMenuButton、ContextMenu实现自定义菜单、按钮菜单、按钮分裂菜单、右键菜单

目录

 

一、环境

二、模拟

三、代码


一、环境

jdk8

二、模拟

三、代码

package xyz.hashdog.class28;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;


/**
 * @author th
 * @description: TODO
 * @projectName hashdog
 * @date 2020/2/1620:48
 */
public class Launch extends Application {

    public static void main(String[] args) {
        Application.launch(Launch.class, args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {


        AnchorPane an = new AnchorPane();
        //创建menubar
        MenuBar menuBar = new MenuBar();
        Menu menu1 = new Menu("menu1");
        Menu menu2 = new Menu("menu2");
        Menu menu3 = new Menu("menu3");
        Menu menu4 = new Menu("menu4");
        //绑定menu
        menuBar.getMenus().addAll(menu1, menu2, menu3, menu4);

        MenuItem item1 = new MenuItem("item1");
        MenuItem item2 = new MenuItem("item2");
        MenuItem item3 = new MenuItem("item3");
        MenuItem item4 = new MenuItem("item4");
        MenuItem item5 = new MenuItem("item5");

        //自定item
        CustomMenuItem cmi1 = new CustomMenuItem();
        Button button = new Button("button");
        cmi1.setContent(button);
        CustomMenuItem cmi2 = new CustomMenuItem();
        //进度条
        ProgressBar bar = new ProgressBar(0.5);
        cmi2.setContent(bar);
        //自定义item放布局
        CustomMenuItem cmi3 = new CustomMenuItem();
        HBox box = new HBox();
        box.getChildren().addAll(new Button("b1"), new Button("b2"), new Button("b3"));
        cmi3.setContent(box);

        //将menuitem放到menu
        menu1.getItems().addAll(item1, item2, item3, cmi1, cmi2, cmi3);
        menu2.getItems().addAll(item4, item5);


        //按钮菜单
        MenuButton mb = new MenuButton("mb");
        MenuItem item6 = new MenuItem("item6");
        MenuItem item7 = new MenuItem("item7");
        mb.getItems().addAll(item6, item7);
        //设置上边的距离
        AnchorPane.setTopAnchor(mb, 20.0);

        //分裂的按钮菜单
        SplitMenuButton smb = new SplitMenuButton();
        smb.setText("smb");
        MenuItem item8 = new MenuItem("item8");
        MenuItem item9 = new MenuItem("item9");
        AnchorPane.setTopAnchor(smb, 60.0);
        smb.getItems().addAll(item8, item9);

        //右键触发菜单
        ContextMenu cm = new ContextMenu();
        MenuItem item10 = new MenuItem("item10");
        MenuItem item11 = new MenuItem("item11");
        cm.getItems().addAll(item10, item11);
        //绑定到按钮
        Button bt = new Button("右键点击出菜单");
        AnchorPane.setTopAnchor(bt, 100.0);
        bt.setContextMenu(cm);

        an.getChildren().addAll(menuBar, mb, smb, bt);
        an.setStyle("-fx-background-color: deepskyblue");
        Scene s = new Scene(an);
        primaryStage.setScene(s);
        primaryStage.setTitle("hashdog");
        primaryStage.setWidth(500);
        primaryStage.setHeight(300);
        //设置窗口不可拉伸
        primaryStage.setResizable(false);
        primaryStage.show();
        menuBar.setPrefWidth(primaryStage.getWidth());


    }

}

发布了133 篇原创文章 · 获赞 32 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/corleone_4ever/article/details/104381371