我正在编写一个 Griffon/Groovy/Swing 应用程序。但是,我也喜欢使用所见即所得的 GUI 工具,例如 Ecipe 的 WindowBuilder 工具。
我想知道是否可以将这两种方法结合起来?我想用它SwingBuilder
来管理视图/模型绑定和一些高级 GUI 任务(如JDesktopPane
和JInternalFrame
),但将内容设计为JFrame
s 由 WindowBuilder 管理。
这是一个简单的 groovy 脚本:
package example
import groovy.swing.SwingBuilder
import java.awt.BorderLayout as BL
count = 0
new SwingBuilder().edt {
frame(title: 'Frame', size: [300, 300], show: true) {
desktopPane() {
internalFrame(visible: true, bounds: [25, 25, 200, 100]) {
borderLayout()
textlabel = label(text: 'Click the button!', constraints: BL.NORTH)
button(text:'Click Me',
actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"}, constraints:BL.SOUTH)
}
internalFrame(visible: true, bounds: [50, 50, 200, 100]).add(new ExamplePanel())
}
}
}
这是 JFrame 的 ExamplePanel 子类:
package example;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JButton;
public class ExamplePanel extends JPanel {
/**
* Create the panel.
*/
public ExamplePanel() {
setLayout(new BorderLayout(0, 0));
JLabel textLabel = new JLabel("Click the button!");
add(textLabel, BorderLayout.NORTH);
JButton button = new JButton("Click Me");
add(button, BorderLayout.SOUTH);
}
}
groovy 脚本创建一个JDesktopPane
和两个视觉上相同JInternalFrame
的 s。第二个JInternalFrame
包含ExamplePanel
,但它没有检测按钮点击或更改标签内容的基础设施。
有没有一种时髦的方法来获得与ExamplePanel
我在SwingBuilder
定义中相同的行为internalFrame
?