桌面托盘可组合件的样式撰写

Car*_*ino 10 system-tray tray compose-desktop compose-multiplatform

我一直在尝试 Compose for Desktop,并且试图弄清楚 Jetbrain 如何设计Tray可组合项的样式。我假设这就是他们用来构建 Jetbrains Toolbox 的方法,因为他们写了一篇关于如何将 Toolbox 迁移到 Compose for Desktop 的文章(请参阅此处)

默认托盘 Jetbrains 工具箱托盘
在此输入图像描述 在此输入图像描述

图像来自 Ubuntu 22;我还没有测试过 Windows 或 Mac。

小智 0

您可以使用此库: https: //github.com/dorkbox/SystemTray

在你的 gradle 文件中

            implementation("net.java.dev.jna:jna:5.14.0")
            implementation("com.dorkbox:SystemTray:4.4")
Run Code Online (Sandbox Code Playgroud)

你可以在你的 main 函数中像这样使用它:

    val tray = SystemTray.get()
    val resource = this::class.java.classLoader.getResource("AppIcon.png")

    tray.setImage(resource)
    val menu = tray.menu

// add a menu item
    menu.add(MenuItem("Item 1") {
        println("Item 1 selected")
    })

// add a checkbox
    menu.add(Checkbox("Checkbox Item") {
        println("Checkbox Item: $it")
    })

// add a separator
    menu.add(Separator())
// add a submenu
    val submenu = Menu("Submenu")
    submenu.add(MenuItem("Subitem 1") {
        println("Subitem 1 selected")
    })
    menu.add(submenu)
Run Code Online (Sandbox Code Playgroud)