You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Groovy SwingBuilder创建JDesktopPane/JInternalFrame组合?

Groovy MDI应用完整实现方案

我帮你把这段代码补全并优化成可运行的Groovy MDI(多文档界面)应用,同时拆解下关键要点:

import groovy.swing.SwingBuilder
import java.awt.BorderLayout as BL

count = 0

new SwingBuilder().edt {
    frame(title: 'MDI主窗口', size: [600, 400], defaultCloseOperation: EXIT_ON_CLOSE, show: true) {
        // MDI核心容器:桌面面板
        desktopPane() {
            // 内部窗口,配置标准交互属性
            internalFrame(title: '第一个内部窗口', size: [300, 200], 
                          closable: true, maximizable: true, iconifiable: true, 
                          resizable: true, visible: true) {
                borderLayout()
                textlabel = label(text: '点击按钮计数!', constraints: BL.NORTH)
                button(text: '点我', constraints: BL.SOUTH, actionPerformed: {
                    count++
                    textlabel.text = "已点击 ${count} 次!"
                })
            }
        }
    }
}

关键细节说明:

  • MDI核心组件:desktopPane()对应Swing的JDesktopPane,是所有内部窗口的容器,负责管理多文档界面的布局和窗口交互逻辑
  • 内部窗口优化:给internalFrame()添加了closable、maximizable等属性,让窗口具备标准的窗口操作能力;显式设置visible: true确保窗口默认显示
  • 线程安全保障:用edt方法包裹所有组件创建逻辑,确保Swing组件在事件调度线程(EDT)上初始化,避免线程安全问题
  • 交互逻辑补全:完善了按钮的actionPerformed闭包,实现点击计数并实时更新标签文本的功能

内容的提问来源于stack exchange,提问作者spierepf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:06:34