WEB开发网
开发学院软件开发Java 实战 Groovy: SwingBuilder 和 Twitter API,第 1... 阅读

实战 Groovy: SwingBuilder 和 Twitter API,第 1 部分:构建基于 Swing 的 GUI 从未如此简便

 2009-11-18 00:00:00 来源:WEB开发网   
核心提示: 如果在命令提示上输入 groovy SearchTest,然后看到 OK (1 test)(见清单 7),实战 Groovy: SwingBuilder 和 Twitter API,第 1 部分:构建基于 Swing 的 GUI 从未如此简便(4),就说明已经成功地把搜索脚本转换为可重用的类了:

如果在命令提示上输入 groovy SearchTest,然后看到 OK (1 test)(见清单 7),就说明已经成功地把搜索脚本转换为可重用的类了:


清单 7. 成功测试的运行结果
$ groovy SearchTest 
. 
Time: 4.64 
 
OK (1 test) 

现在底层基础结构已经就位了,下一步是开始为它提供漂亮的前端。

SwingBuilder 简介

Swing 是一个极其强大的 GUI 工具集。但糟糕的是,有时候其复杂性会影响开发人员挥发它的能力。如果您刚接触 Swing,会觉得像是在学习开波音 747,而您实际上只需要开单引擎的 Cessna 或滑翔机。

Groovy 的 SwingBuilder 并不能降低各种任务内在的复杂性,比如选择适当的 LayoutManager 或处理线程问题。它降低的是语法复杂性。Groovy 的命名参数/变量参数构造器非常适合需要实例化的各种 JComponent,然后马上可以为它们配置一系列设置器。

但是,同样有价值的是 Groovy 对闭包的使用。对于 Swing,我长期关注的问题是自然的层次结构似乎在实现细节中消失了。在 Java 代码中,会得到一组相互脱节的组件,看不出哪个组件属于哪个组件。可以以任意次序声明 JFrame、JPanel 和 JLabel。在代码中,它们看起来是平等的;但是,实际上 JFrame 包含 JPanel,JPanel 进而包含 JLabel。清单 8 给出一个示例:


清单 8. HelloJavaSwing.java
import javax.swing.*; 
 
public class HelloJavaSwing { 
 public static void main(String[] args) { 
  JPanel panel = new JPanel(); 
  JLabel label = new JLabel("Hello Java Swing"); 
 
  JFrame frame = new JFrame("Hello Java Swing"); 
  panel.add(label); 
  frame.add(panel); 
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  frame.setSize(200,300); 
  frame.setVisible(true); 
 } 
} 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:实战 Groovy SwingBuilder

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接