首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

实战 Groovy(五)- 添加结果面板

2012-07-18 
实战 Groovy(5)- 添加结果面板如清单 13 所示,像对待 searchPanel 那样,在嵌套的闭包中定义 resultsPanel。

实战 Groovy(5)- 添加结果面板

如清单 13 所示,像对待 searchPanel 那样,在嵌套的闭包中定义 resultsPanel。但是,这一次在这个面板中嵌套另一个容器:JScrollPane。这个组件可以根据需要显示和隐藏水平和垂直滚动条。Search.byKeyword() 方法调用的结果显示在名为resultsList 的 JList 中。(JList.setListData() 方法接受一个 Object[] — 这就是 Search.byKeyword() 方法返回的结果)。


清单 13. 添加 resultsPanel 
import groovy.swing.SwingBuilderimport javax.swing.*import java.awt.*class Gwitter{     def searchField  def resultsList    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:{           resultsList.listData = Search.byKeyword(searchField.text) } )      }    }        def resultsPanel = {      swingBuilder.scrollPane(constraints: BorderLayout.CENTER){        resultsList = list()      }    }            swingBuilder.frame(title:"Gwitter",                        defaultCloseOperation:JFrame.EXIT_ON_CLOSE,                        size:[400,500],                       show:true) {      customMenuBar()                               searchPanel()      resultsPanel()    }      }  }

注意,与 searchField 一样,resultsList 变量是在类级定义的。searchPanel 中按钮的 actionPerformed 处理函数使用这两个变量。

添加 resultsPanel 之后,Gwitter 现在有实际功能了。在命令提示上输入 groovy Gwitter,检查它是否工作正常。搜索 thirstyhead应该会产生图 5 所示的结果:


图 5. 搜索结果
实战 Groovy(五)- 添加结果面板 

现在可以宣布成功了,但是我想先解决两个问题。第一个问题是搜索按钮的 actionPerformed 处理函数可能会引起线程问题。另一个问题是这个应用程序太一般了。下面两节解决这些问题。


更新的详细信息请参考  java进阶网 www.javady.com

热点排行