Kotlin Multiplatform Development Help

鼠标事件监听器

在桌面项目中,您可以监听各种鼠标事件,例如点击、移动、滚动或进入/离开输入区域。

点击监听器

点击监听器在 Android 和桌面平台的 Compose Multiplatform 中均可用,因此您的代码可以跨平台工作。例如,以下是如何使用 onClickonDoubleClickonLongClick 修饰符设置简单点击监听器:

(代码块保持原样,不翻译)

combinedClickable 修饰符仅支持主按钮(鼠标左键)和触摸事件。如需处理其他按钮,请参阅 Modifier.onClick 部分。

移动监听器

以下代码创建指针移动监听器,根据鼠标指针位置改变窗口背景色:

(代码块保持原样,不翻译)

进入监听器

桌面版 Compose Multiplatform 支持指针进入/离开输入区域的处理器。例如,以下代码会在悬停时改变文本字体样式:

(代码块保持原样,不翻译)

滚动监听器

以下示例根据鼠标滚动方向增减显示的数字:

(代码块保持原样,不翻译)

实验性 onClick 处理器

Modifier.onClick 为单击、双击和长按提供独立回调。它仅处理来自指针事件的点击,默认不处理无障碍 click 事件。

可通过 matcher: PointerMatcherkeyboardModifiers: PointerKeyboardModifiers.() -> Boolean 配置每个 onClick

  • matcher 用于选择触发点击事件的鼠标按钮

  • keyboardModifiers 用于筛选包含指定按键的指针事件

可链式调用多个 onClick 修饰符来处理不同条件下的点击。与 clickable 不同, onClick 默认不包含 Modifier.indicationModifier.semantics ,且不会响应 Enter 键触发点击事件。如需这些功能需单独添加修饰符。通用性最高的处理器(条件最少的)应声明在前以确保事件正确传播。

(代码块保持原样,不翻译)

实验性 onDrag 修饰符

通过 Modifier.onDragmatcher: PointerMatcher 可指定触发拖动的指针。与 onClick 类似,可链式调用多个 onDrag 修饰符。

可通过 LocalWindowInfo.current.keyboardModifier 检查键盘修饰键状态(例如常规拖动移动项目,按住 Ctrl 拖动复制项目)。

以下示例演示如何处理左/右键拖动及含键盘操作的拖动:

(代码块保持原样,不翻译)

也可使用非修饰符方式 suspend fun PointerInputScope.detectDragGestures 处理拖动:

(代码块保持原样,不翻译)

通过 Swing 互操作访问原始 AWT 事件

桌面版 Compose Multiplatform 底层使用 Swing,可访问原始 AWT 事件:

(代码块保持原样,不翻译)

通过 pointerInput 在通用代码中监听原始事件

前文示例使用的 Modifier.onPointerEvent 是订阅特定指针事件的快捷方式,属于实验性 API 且仅限桌面使用。如需在通用代码中订阅事件或需要稳定 API,请使用 Modifier.pointerInput

(代码块保持原样,不翻译)

下一步

探索其他桌面组件教程

22 四月 2025