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

来源:互联网 发布:淘宝买望远镜可靠吗 编辑:程序博客网 时间:2024/06/06 02:43

如清单 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. 搜索结果
图 5. 搜索结果 

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


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* csdn 横中 */google_ad_slot = "7877933139";google_ad_width = 468;google_ad_height = 60;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击