小编Vad*_*huk的帖子

用于文本选择的浮动工具栏 Jetpack Compose

如何在 Jetpack Compose 中将选定文本的菜单自定义到 TextField?我的意思是这样的:

例子

在官方文档或互联网上没有找到任何有关如何使用 Jetpack Compose 执行此操作的信息。

android kotlin android-jetpack android-jetpack-compose

9
推荐指数
1
解决办法
3968
查看次数

确定特定系统托盘图标的位置(x,y)

问题

我正在使用 Jetbrains Compose 开发桌面应用程序,但我也愿意接受使用 Swing(它在幕后使用)的解决方案。我想实现一个功能,其中应用程序窗口最初位于系统托盘图标上,类似于 JetBrains Toolbox 的行为方式(我想将一个(未修饰的)窗口放置在靠近托盘图标的位置)。

例子

截图示例 在此输入图像描述

我尝试使用鼠标事件来检测托盘图标上的点击并相应地定位窗口,但该方法无法实现所需的行为。它确实有效,但窗口有时会跳跃(取决于我单击的位置,并且解决方案总体看起来很奇怪)。

在此输入图像描述

我之前的解决方案

我发布我的解决方案,以防有人需要它:

internal object XTray {

    fun initialize(image: Image, onClick: (x: Int, y: Int) -> Unit) {
        createTrayIcon(image, onClick)
    }

    private fun createTrayIcon(
        image: Image,
        onClick: (x: Int, y: Int) -> Unit,
    ): TrayIcon {
        val systemTray = SystemTray.getSystemTray()

        val trayIcon = TrayIcon(image, "Open X")

        trayIcon.popupMenu = PopupMenu("X")

        trayIcon.addMouseListener(createTrayMouseListener { x, y ->
            onClick(x, y)
        })

        systemTray.add(trayIcon)

        return trayIcon
    }

    private fun createTrayMouseListener(
        onClick: (x: Int, y: Int) -> …
Run Code Online (Sandbox Code Playgroud)

java desktop swing kotlin jetbrains-compose

5
推荐指数
1
解决办法
228
查看次数