目 录CONTENT

文章目录

JavaFx 上下文菜单(ContextMenu)使用

Stars-one
2025-02-27 / 0 评论 / 0 点赞 / 7 阅读 / 2623 字

注: 我用的是Tornadofx框架,所以下文代码示例都是kotlin的

效果

基本使用

下面的例子,就是超链接可以右键弹出上下文的效果(效果就是上图):

代码如下:

val demoUrl = "https://xx"
hyperlink(demoUrl) {
		tooltip(this.text.toString())
		maxWidth = 450.0
		style {
			fontWeight = FontWeight.BOLD
		}

		// 创建菜单项
		val item1 = MenuItem("复制链接")
		val item2 = MenuItem("浏览器打开网址")

		//设置2个菜单项的点击事件
		item1.setOnAction {
			TornadoFxUtil.copyTextToClipboard(demoUrl)
		}
		item2.setOnAction {
			TornadoFxUtil.openUrl(demoUrl)
		}
		
		// 创建上下文菜单
		val contextMenu = ContextMenu(item1, item2)
		//和当前超链接组件绑定
		setContextMenu(contextMenu)
	}

想要左键触发上下文菜单?

如果我们想要鼠标点击后,出现上下文菜单,那又该如何呢?

答案很简单,直接设置点击事件,让ContextMenu弹出即可

hyperlink(demoUrl) {
	tooltip(this.text.toString())
	maxWidth = 450.0
	style {
		fontWeight = FontWeight.BOLD
	}

	// 创建菜单项
	val item1 = MenuItem("复制链接")
	val item2 = MenuItem("浏览器打开网址")

	item1.setOnAction {
		TornadoFxUtil.copyTextToClipboard(demoUrl)
	}
	item2.setOnAction {
		TornadoFxUtil.openUrl(demoUrl)
	}
	// 创建上下文菜单
	val contextMenu = ContextMenu(item1, item2)

	setContextMenu(contextMenu)

	setOnMouseClicked {
		contextMenu.show(this,it.screenX,it.screenY)
	}
}

当然,MenuItem的构造方法,还可以支持设置一个图标(也就是第2个参数,接收一个Node)

参数是Node类型,其实就是很自由了,除了图片,你还可以设置其他的如文本,或者是Vbox等

0

评论区