Jetpack compose for desktop:运行 应用程序在后台?
Jetpack compose for desktop: run application in background?
我是 Jetpack Compose 的新手。我对该主题进行了大量研究,但找不到任何有用的东西。我想要实现的是,如果我关闭我的 window,我的应用程序将留在后台并可以从托盘中再次打开。我设法创建了托盘,但是当我关闭应用程序时 window 它关闭了整个应用程序。我怎样才能做到这一点?
此应用程序仅适用于 Windows 和 MacOS。我现在不关心 android
编辑:版本 0.4.0
我设法弄明白了。主要功能应该是一个应用程序,而不是 window
@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {
}
并且如果应用程序同时包含Window和托盘,它将在后台继续运行并且在window关闭后不会关闭。
@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {
Tray(
icon = BufferedImage(24, 24, 1),
menu = {
Item(
"Exit",
onClick = { exitProcess(1) }
)
}
)
Window{
Text("Hello World")
}
}
编辑:版本 1.0.0-beta5
现在您必须在 window 对象上指定 onCloseRequest,如果将其留空则不会关闭 window。
在应用程序中,创建一个变量来指示 window 是否打开。
像以前一样创建托盘。托盘图标现在需要 Painter 对象而不是 BufferedImage。
比简单地检查 window 打开状态是否为真,显示 window,否则什么都不做。
@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {
val isOpen = remember { mutableStateOf(true)}
Tray(
icon = TrayIcon,
menu = {
Item(
"Exit",
onClick = { exitApplication() }
)
}
)
if(isOpen.value){
Window(
onCloseRequest = { isOpen.value = false }
) {
MaterialTheme {
Text("Hello World")
}
}
}
}
object TrayIcon : Painter() {
override val intrinsicSize = Size(256f, 256f)
override fun DrawScope.onDraw() {
drawOval(Color(0xFFFFA500))
}
}
我是 Jetpack Compose 的新手。我对该主题进行了大量研究,但找不到任何有用的东西。我想要实现的是,如果我关闭我的 window,我的应用程序将留在后台并可以从托盘中再次打开。我设法创建了托盘,但是当我关闭应用程序时 window 它关闭了整个应用程序。我怎样才能做到这一点?
此应用程序仅适用于 Windows 和 MacOS。我现在不关心 android
编辑:版本 0.4.0
我设法弄明白了。主要功能应该是一个应用程序,而不是 window
@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {
}
并且如果应用程序同时包含Window和托盘,它将在后台继续运行并且在window关闭后不会关闭。
@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {
Tray(
icon = BufferedImage(24, 24, 1),
menu = {
Item(
"Exit",
onClick = { exitProcess(1) }
)
}
)
Window{
Text("Hello World")
}
}
编辑:版本 1.0.0-beta5
现在您必须在 window 对象上指定 onCloseRequest,如果将其留空则不会关闭 window。 在应用程序中,创建一个变量来指示 window 是否打开。 像以前一样创建托盘。托盘图标现在需要 Painter 对象而不是 BufferedImage。 比简单地检查 window 打开状态是否为真,显示 window,否则什么都不做。
@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {
val isOpen = remember { mutableStateOf(true)}
Tray(
icon = TrayIcon,
menu = {
Item(
"Exit",
onClick = { exitApplication() }
)
}
)
if(isOpen.value){
Window(
onCloseRequest = { isOpen.value = false }
) {
MaterialTheme {
Text("Hello World")
}
}
}
}
object TrayIcon : Painter() {
override val intrinsicSize = Size(256f, 256f)
override fun DrawScope.onDraw() {
drawOval(Color(0xFFFFA500))
}
}