鼠标事件监听器
在桌面项目中,您可以监听各种鼠标事件,例如点击、移动、滚动或进入/离开输入区域。
点击监听器
点击监听器在 Android 和桌面平台的 Compose Multiplatform 中均可用,因此您的代码可以跨平台工作。例如,以下是如何使用 onClick
、 onDoubleClick
和 onLongClick
修饰符设置简单点击监听器:
combinedClickable
修饰符仅支持主按钮(鼠标左键)和触摸事件。如需处理其他按钮,请参阅 Modifier.onClick
部分。
移动监听器
以下代码创建指针移动监听器,根据鼠标指针位置改变窗口背景色:
进入监听器
桌面版 Compose Multiplatform 支持指针进入/离开输入区域的处理器。例如,以下代码会在悬停时改变文本字体样式:
滚动监听器
以下示例根据鼠标滚动方向增减显示的数字:
实验性 onClick 处理器
Modifier.onClick
为单击、双击和长按提供独立回调。它仅处理来自指针事件的点击,默认不处理无障碍 click
事件。
可通过 matcher: PointerMatcher
和 keyboardModifiers: PointerKeyboardModifiers.() -> Boolean
配置每个 onClick
:
matcher
用于选择触发点击事件的鼠标按钮keyboardModifiers
用于筛选包含指定按键的指针事件
可链式调用多个 onClick
修饰符来处理不同条件下的点击。与 clickable
不同, onClick
默认不包含 Modifier.indication
和 Modifier.semantics
,且不会响应 Enter
键触发点击事件。如需这些功能需单独添加修饰符。通用性最高的处理器(条件最少的)应声明在前以确保事件正确传播。
实验性 onDrag 修饰符
通过 Modifier.onDrag
的 matcher: PointerMatcher
可指定触发拖动的指针。与 onClick
类似,可链式调用多个 onDrag
修饰符。
可通过 LocalWindowInfo.current.keyboardModifier
检查键盘修饰键状态(例如常规拖动移动项目,按住 Ctrl
拖动复制项目)。
以下示例演示如何处理左/右键拖动及含键盘操作的拖动:
也可使用非修饰符方式 suspend fun PointerInputScope.detectDragGestures
处理拖动:
通过 Swing 互操作访问原始 AWT 事件
桌面版 Compose Multiplatform 底层使用 Swing,可访问原始 AWT 事件:
通过 pointerInput 在通用代码中监听原始事件
前文示例使用的 Modifier.onPointerEvent
是订阅特定指针事件的快捷方式,属于实验性 API 且仅限桌面使用。如需在通用代码中订阅事件或需要稳定 API,请使用 Modifier.pointerInput
:
下一步
探索其他桌面组件教程。