注: 我用的是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等
评论区