加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:54:45 所属栏目:大数据 来源:网络整理
导读:如清单 13 所示,像对待? searchPanel ?那样,在嵌套的闭包中定义? resultsPanel 。但是,这一次在这个面板中嵌套另一个容器: JScrollPane 。这个组件可以根据需要显示和隐藏水平和垂直滚动条。 Search.byKeyword() ?方法调用的结果显示在名为 resultsList

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


清单 13. 添加?resultsPanel?
				
import groovy.swing.SwingBuilder
import 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?处理函数可能会引起线程问题。另一个问题是这个应用程序太一般了。下面两节解决这些问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读