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

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

 2009-11-18 00:00:00 来源:WEB开发网   
核心提示: 开始处理面板之后,就要选择适当的 LayoutManger,实战 Groovy: SwingBuilder 和 Twitter API,第 1 部分:构建基于 Swing 的 GUI 从未如此简便(8),在默认情况下,JPanel 使用 FlowLayout,这个组件可以根据需要显示和隐藏水平和

开始处理面板之后,就要选择适当的 LayoutManger。在默认情况下,JPanel 使用 FlowLayout。这意味着 textField 和 button 挨着水平排列。

JFrame 的 contentPane 不太一样 — 它在默认情况下使用 BorderLayout。这意味着在框架中添加 searchPanel 时需要指定它应该出现在哪个区域:NORTH、SOUTH、EAST、WEST 或 CENTER。(如果您的地理知识实在糟糕,也可以使用 PAGE_START、PAGE_END、LINE_START、LINE_END 和 CENTER)。

注意,searchField 变量是在类级声明的。因此,按钮等其他组件也可以访问它。其他组件都是匿名的。快速浏览一下类属性,就会看出某些组件比较重要。

您可能已经注意到按钮的 actionPerformed 监听器目前没有做任何事情。现在实际上还不需要它做什么。在实现它之前,需要在应用程序中添加另一个面板:用来显示搜索结果的面板。

添加结果面板

如清单 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() 
  }   
 }  
} 

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

Tags:实战 Groovy SwingBuilder

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