我想使用SwingBuilder.frame()访问JFrame(GraphicsConfiguration),但我无法通过属性设置它,因为它不可用。如何使用Groovy Builders传递构造函数参数?
更新:根据要求,包括解决方案。 首先检查FrameFactory.newInstance(builder,name,value,attrs)方法的value参数,看它是否是JFrame本身。如果没有,则忽略它,并创建一个新的JFrame。然后将其传递给post-init方法以处理属性。
这映射到以下语法:
builder.name(value, attrs){}
其中 attrs 是标准键:值格式的属性地图。
所以,完成一个例子:
SwingBuilder swing = new SwingBuilder()
// pass the title to the valueFrame, even though we can pass as attr, for the example
JFrame valueFrame = new JFrame("Value Frame Title")
JFrame myFrame = swing.frame(valueFrame,
pack:true,
defaultCloseOperation:JFrame.DISPOSE_ON_CLOSE) {
... add your panels, etc here
}
assert myFrame == valueFrame