1、右键菜单,如图

2、实例-1:最简单的右键菜单

下面我们演示一个通过右键菜单来改变背景和字体颜色的例子。

package zkh.javafx.learn.contextmenu;import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
import javafx.stage.Stage;/*** ContextMenu*/
//继承javafx.application.Application是JavaFX的开始
public class ContextMenu1 extends Application {/*** Stage:就是你能看到的整个软件界面(窗口)* Scene:就是除了窗口最上面有最大、最小化及关闭按钮那一行及窗口边框外其它的区域(场景)* 场景(Scene)是一个窗口(Stage)必不可少的*/@Overridepublic void start(Stage stage) throws Exception {final Label label = new Label("一个即将被添加右键菜单的Label"); label.setAlignment(Pos.CENTER);label.setStyle("-fx-background-color:gray");// 右键菜单===================================================================// 创建右键菜单ContextMenu contextMenu = new ContextMenu();// 菜单项MenuItem redBg = new MenuItem("黑底白色");redBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:black;-fx-text-fill:white;");}});// 菜单项MenuItem blueBg = new MenuItem("白底黑字");blueBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:white;-fx-text-fill:black;");}});contextMenu.getItems().addAll(redBg, blueBg);// 右键菜单===================================================================// 添加右键菜单到labellabel.setContextMenu(contextMenu);// 1、初始化一个场景Scene scene = new Scene(label, 800, 600);// 2、将场景放入窗口stage.setScene(scene);// 3、打开窗口stage.show();}public static void main( String[] args ){// 启动软件Application.launch(args);}}

效果动图:

3、实例-2:多级菜单,跟菜单栏的用法基本一致

package zkh.javafx.learn.contextmenu;import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.stage.Stage;/*** ContextMenu*/
//继承javafx.application.Application是JavaFX的开始
public class ContextMenu2 extends Application {/*** Stage:就是你能看到的整个软件界面(窗口)* Scene:就是除了窗口最上面有最大、最小化及关闭按钮那一行及窗口边框外其它的区域(场景)* 场景(Scene)是一个窗口(Stage)必不可少的*/@Overridepublic void start(Stage stage) throws Exception {final Label label = new Label("一个即将被添加右键菜单的Label"); label.setAlignment(Pos.CENTER);label.setStyle("-fx-background-color:gray");// 右键菜单===================================================================// 创建右键菜单ContextMenu contextMenu = new ContextMenu();// 菜单项MenuItem blackBg = new MenuItem("黑底白色");blackBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:black;-fx-text-fill:white;");}});// 菜单项MenuItem whiteBg = new MenuItem("白底黑字");whiteBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:white;-fx-text-fill:black;");}});// 多级菜单项Menu otherBg = new Menu("其他");// 二级菜单项MenuItem regBg = new MenuItem("红底白色");regBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:red;-fx-text-fill:white;");}});// 二级菜单项MenuItem blueBg = new MenuItem("蓝底白字");blueBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:blue;-fx-text-fill:white;");}});otherBg.getItems().addAll(regBg, blueBg);// 将菜单项添加进右键菜单contextMenu.getItems().addAll(blackBg, whiteBg, otherBg);// 右键菜单===================================================================// 添加右键菜单到labellabel.setContextMenu(contextMenu);// 1、初始化一个场景Scene scene = new Scene(label, 800, 600);// 2、将场景放入窗口stage.setScene(scene);// 3、打开窗口stage.show();}public static void main( String[] args ){// 启动软件Application.launch(args);}}

效果动图:

4、实例-3:右键菜单自定义样式

右键菜单跟菜单栏的很多原始样式都是通用的

package zkh.javafx.learn.contextmenu;import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.stage.Stage;
import zkh.javafx.util.Constants;/*** ContextMenu*/
//继承javafx.application.Application是JavaFX的开始
public class ContextMenu2 extends Application {/*** Stage:就是你能看到的整个软件界面(窗口)* Scene:就是除了窗口最上面有最大、最小化及关闭按钮那一行及窗口边框外其它的区域(场景)* 场景(Scene)是一个窗口(Stage)必不可少的*/@Overridepublic void start(Stage stage) throws Exception {final Label label = new Label("一个即将被添加右键菜单的Label"); label.setAlignment(Pos.CENTER);label.setStyle("-fx-background-color:gray");// 右键菜单===================================================================// 创建右键菜单ContextMenu contextMenu = new ContextMenu();// 菜单项MenuItem blackBg = new MenuItem("黑底白色");blackBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:black;-fx-text-fill:white;");}});// 菜单项MenuItem whiteBg = new MenuItem("白底黑字");whiteBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:white;-fx-text-fill:black;");}});// 多级菜单项Menu otherBg = new Menu("其他");// 二级菜单项MenuItem regBg = new MenuItem("红底白色");regBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:red;-fx-text-fill:white;");}});// 二级菜单项MenuItem blueBg = new MenuItem("蓝底白字");blueBg.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {label.setStyle("-fx-background-color:blue;-fx-text-fill:white;");}});otherBg.getItems().addAll(regBg, blueBg);// 将菜单项添加进右键菜单contextMenu.getItems().addAll(blackBg, whiteBg, otherBg);// 右键菜单===================================================================// 添加右键菜单到labellabel.setContextMenu(contextMenu);// 1、初始化一个场景Scene scene = new Scene(label, 800, 600);// 样式文件最好在Scene中引入,这样其他子组件就都可以使用了(哲理注意替换斜杠\,不能会报错找不到路径)scene.getStylesheets().add((Constants.CSS + "app.css").replace("\\", "/"));// 2、将场景放入窗口stage.setScene(scene);// 3、打开窗口stage.show();}public static void main( String[] args ){// 启动软件Application.launch(args);}}

css代码:

.zkh_MenuBar{-fx-background-color:#F0F0F0;-fx-border:none;-fx-padding:0;-fx-font-size:12;
}
.zkh_MenuItem{-fx-padding: 8 60 8 30;-fx-font-size:12;-fx-cursor:hand;
}
.context-menu{-fx-padding:2;-fx-border-width:0;-fx-background-color:rgb(242,242,242,0.96); /*0.87*//*-fx-background-radius:2px;*//*-fx-effect:dropshadow(three-pass-box, #F2F2F2, 1, 0, 0, 0);*/ /*阴影效果*/
}
.menu-bar > .container > .menu-button:showing{ /*菜单栏选中并移动到二级菜单时一级选中菜单的样式*/-fx-background-color:#CCCCCE;-fx-border-color:#CCCCCE;
}
.menu-button{-fx-padding:1 4 1 4;-fx-border-width:1;-fx-border-color:#F0F0F0;
}
.menu-button:hover{-fx-background-color:#CCCCCE;-fx-border-color:#CCCCCE;
}
.menu-button > .label,.menu-item > .label{-fx-text-fill:BLACK;
}
.menu-item:focused{-fx-background-color:#CCCCCE; /*#90C8F6*/
}
.menu:focused > .right-container > .arrow{-fx-background-color:#CCCCCE;
}

效果动图:

5、源代码(不推荐,文章基本都有了)

JavaFX+Jfoenix 学习笔记(五)--ContextMenu右键菜单源码

好了,多看注释!

JavaFX+Jfoenix 学习笔记(五)--ContextMenu右键菜单相关推荐

  1. JavaFX+Jfoenix 学习笔记(序)--引言And软件截图

    文章目录(更新中): JavaFX+Jfoenix 学习笔记(序)--引言And软件截图 JavaFX+Jfoenix 学习笔记(一)--环境搭建及多款Hello Word演示 JavaFX+Jfoe ...

  2. Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )

    Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...

  3. Python学习笔记五:控制语句

    Python学习笔记五:控制语句 Pycharm 开发环境的下载安装配置_项目管理 控制语句 Pycharm 开发环境的使用 Pycharm 下载和安装 激活和选择不同UI 风格 创建项目和初始化配置 ...

  4. Halcon 学习笔记五:几何定位+仿射变换+测量

    Halcon 学习笔记五:几何定位+仿射变换+测量 定位流程 例子一 例子二(药片的定位) 例子三(充电宝定位) 例子四(车牌定位) 其他 定位流程 blob分析 模板匹配 (仿射变换成标准的形状) ...

  5. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  6. Ethernet/IP 学习笔记五

    Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...

  7. JQuery之ContextMenu(右键菜单)

    JQuery之ContextMenu(右键菜单) 插件下载地址: http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextme ...

  8. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  9. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

最新文章

  1. tensorflow-yolov4实施方法
  2. LeetCode 75. 颜色分类(Sort Colors)
  3. CentOS6.3安装MySQL5.5
  4. 2021-01-22 使用 Docker 打包 Python 项目
  5. python实现监控增量_Python 快速计算增量的方法
  6. JavaSE各阶段练习题----异常
  7. 解决ADB server didn't ACK问题,连上手机问题
  8. nginx负载均衡 页面缓存
  9. Shell 标准输入、输出和错误
  10. Hive之安装 部署
  11. 《Reids 设计与实现》第十一章 服务器
  12. [DEncrypt] DESEncrypt--加密/解密帮助类 (转载)
  13. [渝粤教育] 浙江大学 2021 2022秋数码摄影技术 参考 资料
  14. 60、剑指offer--把二叉树打印成多行
  15. B站上这些Python和数据分析视频真香!
  16. 如何免费下载百度文库文章
  17. PDF Expert快捷键
  18. 平板电脑的尺寸是怎么算出来的
  19. 用html+css作个简单的九宫格
  20. Intellij搭建spark开发环境

热门文章

  1. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
  2. Building my first maching learning system
  3. 批量修改文件名去括号,没有括号的方法
  4. 【Qt Creator】配置代码编辑器字体
  5. 前端进阶_狂神Vue笔记_语法指令v-bind、v-on、v-for_表单双绑_组件_Axios异步通信_Vue的生命周期_计算属性_插槽 <slot>_webpack使用_vue-router路由
  6. Window10 JDK8安装与配置详细步骤
  7. 内容分发平台的2018:头部阵营的三项总结,五大趋势
  8. Vue文件上传问题合集
  9. linux+scp+失败_Linux scp 命令卡住的原因
  10. mini-MBA学习总结一:建设高效团队和决策与执行