如何在Jetpack Compose Desktop中程序化最小化/最大化窗口?
如何在Jetpack Compose Desktop中编程实现窗口最小化与最大化操作?
完全可以实现,核心是利用Compose Desktop WindowScope 中提供的window实例,调用其内置的窗口控制方法即可。
以下是完整的实现代码,包含最小化、最大化/恢复功能:
import androidx.compose.material.Button import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.window.Window import androidx.compose.ui.window.application import androidx.compose.ui.window.exitApplication fun main() { application { Window( title = "My Application", focusable = true, onCloseRequest = { exitApplication() } ) { MaterialTheme { // 记录窗口最大化状态,用于切换按钮文本 var isMaximized by remember { mutableStateOf(window.isMaximized) } // 最小化按钮 Button(onClick = { window.minimize() }) { Text("最小化") } // 最大化/恢复切换按钮 Button(onClick = { if (isMaximized) { window.restore() } else { window.maximize() } isMaximized = window.isMaximized }) { Text(if (isMaximized) "恢复" else "最大化") } } } } }
关键说明:
- 获取窗口实例:在
Window的内容lambda中(自动处于WindowScope),直接通过window变量访问当前窗口对象。 - 窗口控制方法:
- 调用
window.minimize()可将窗口最小化到任务栏。 - 调用
window.maximize()可将窗口铺满屏幕。 - 调用
window.restore()可将最大化的窗口恢复到之前的尺寸和位置。
- 调用
- 状态同步:使用
window.isMaximized属性判断当前窗口状态,配合remember和mutableStateOf实现按钮文本的动态更新,确保UI与窗口状态一致。
内容的提问来源于stack exchange,提问作者Benjamin Jalon
相关产品推荐
相关产品推荐

