实战 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. 搜索结果
现在可以宣布成功了,但是我想先解决两个问题。第一个问题是搜索按钮的 actionPerformed
处理函数可能会引起线程问题。另一个问题是这个应用程序太一般了。下面两节解决这些问题。
- 实战 Groovy(5)- 添加结果面板
- 实战 Groovy(4)- 添加菜单栏
- 实战 Groovy: 用 Groovy 进行 JDBC 编程
- 实战 Groovy: Groovy:Java 程序员的 DSL
- 实战 Groovy: Groovy:Java 程序员的 DSL
- 实战 Groovy(3)- Groovy中的SwingBuilder 简介
- (88)搜索结果面板
- GX 添加面板
- 实战 Groovy: for each 剖析
- 实战 Groovy: for each 剖析
- 实战 Groovy: for each 剖析
- groovy 闭包实战教程
- Feathers项目实战_面板
- 【转】实战 Groovy: Groovy:Java 程序员的 DSL
- WinCE控制面板添加应用程序
- WinCE控制面板添加应用程序
- WinCE控制面板添加应用程序
- WinCE控制面板添加应用程序
- 懒人日记5
- 实战 Groovy(4)- 添加菜单栏
- mybatis学习笔记(四)
- 懒人日记6
- npm拉不到module怎么办
- 实战 Groovy(5)- 添加结果面板
- 懒人日记7
- Android游戏开发基础part8--游戏音乐与音效
- include "*.h" 和 declare class *; 的区别?
- 实战 Groovy(6)- 事件分派线程
- JAVA IO操作
- 概率论重点回顾
- js日期时间格式验证,时间比较
- 懒人日记8