You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose Desktop:如何禁用TextField右键的复制/粘贴/剪切菜单?

禁用Jetpack Compose Desktop中TextField的右键上下文菜单

在Jetpack Compose Desktop开发场景下,仅通过LocalTextToolbar设置EmptyTextToolbar无法禁用TextField右键弹出的复制、粘贴、剪切上下文菜单——这是因为Desktop平台的右键菜单由系统层面处理,需要针对性拦截。

解决方案

  • 拦截系统右键事件
    给TextField添加Modifier.onContextMenu修饰符,消费右键事件以阻止系统菜单弹出:

    var text by remember { mutableStateOf("") }
    
    TextField(
        value = text,
        onValueChange = { text = it },
        modifier = Modifier.onContextMenu {
            // 消费右键事件,不触发系统上下文菜单
            true
        }
    )
    
  • 双重拦截(同时处理Compose内部菜单)
    若需要同时禁用Compose自身的文本选中工具栏,可结合LocalTextToolbar设置,确保完全屏蔽相关操作菜单:

    var text by remember { mutableStateOf("") }
    
    CompositionLocalProvider(
        LocalTextToolbar provides EmptyTextToolbar
    ) {
        TextField(
            value = text,
            onValueChange = { text = it },
            modifier = Modifier.onContextMenu { true }
        )
    }
    

说明:onContextMenu修饰符负责拦截Desktop系统的右键点击事件,返回true表示事件已被处理;LocalTextToolbar的设置则针对Compose框架内部的文本操作工具栏,两者结合可彻底禁用复制、粘贴、剪切相关的上下文菜单。

内容的提问来源于stack exchange,提问作者LittleLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:04:54