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

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

 2009-11-18 00:00:00 来源:WEB开发网   
核心提示: 请注意 customMenuBar 闭包的嵌套层次结构,为了便于阅读,实战 Groovy: SwingBuilder 和 Twitter API,第 1 部分:构建基于 Swing 的 GUI 从未如此简便(7),这里添加了换行和缩进,但是同样很容易在同一行中定义它, 例如,Gwitter 需要

请注意 customMenuBar 闭包的嵌套层次结构。为了便于阅读,这里添加了换行和缩进,但是同样很容易在同一行中定义它。定义这个闭包之后,在 frame 闭包中调用它。再次输入 groovy Gwitter,确认会出现 File 菜单,见图 4。选择 File > Exit,关闭这个应用程序。


图 4. Gwitter 的 File 菜单
实战 Groovy: SwingBuilder 和 Twitter API,第 1 部分:构建基于 Swing 的 GUI 从未如此简便

图片看不清楚?请点击这里查看原图(大图)。

再看看 清单 11。注意,actionPerformed 处理函数定义为闭包,而不是匿名类。与相应的 Java 代码相比,这样的代码更干净、更容易阅读。

现在,添加一些表单元素以执行搜索。

添加搜索面板

经验丰富的 Swing 开发人员善于用单独的 JPanel 组装出最终的应用程序。这些容器组件可以方便地把相似、相关的组件分组在一起。

例如,Gwitter 需要一个 JTextField(让用户能够输入搜索条件)和一个 JButton (用于提交请求)。把这两个组件分组在一个 searchPanel 闭包中是有意义的,见清单 12:


清单 12. 添加搜索面板
import groovy.swing.SwingBuilder 
import javax.swing.* 
import java.awt.* 
 
class Gwitter{  
 def searchField 
  
 static void main(String[] args){ 
  def gwitter = new Gwitter() 
  gwitter.show() 
 } 
   
 void show(){ 
  def swingBuilder = new SwingBuilder()  
   
  def customMenuBar = { 
   swingBuilder.menuBar{ 
    menu(text: "File", mnemonic: 'F') { 
     menuItem(text: "Exit", mnemonic: 'X', actionPerformed: {dispose() }) 
    } 
   }  
  }   
 
  def searchPanel = { 
   swingBuilder.panel(constraints: BorderLayout.NORTH){ 
    searchField = textField(columns:15) 
    button(text:"Search", actionPerformed:{ /* TODO */ } ) 
   } 
  } 
   
  swingBuilder.frame(title:"Gwitter", 
            defaultCloseOperation:JFrame.EXIT_ON_CLOSE, 
            size:[400,500], 
            show:true) { 
   customMenuBar()             
   searchPanel() 
  }   
 }  
} 

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

Tags:实战 Groovy SwingBuilder

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