2010-08-25 8 views
3

Comment ajouter un en-tête à la table définie ci-dessous?Comment ajouter un en-tête à une table Groovy SwingBuilder?

import groovy.swing.SwingBuilder 

data = [[first:'qwer', last:'asdf'], 
     [first:'zxcv', last:'tyui'], 
     [first:'ghjk', last:'bnm']] 

swing = new SwingBuilder() 
frame = swing.frame(title:'table test'){ 
    table { 
     tableModel(list : data) { 
      propertyColumn(header:'First Name', propertyName:'first') 
      propertyColumn(header:'last Name', propertyName:'last') 
     } 
    } 
} 
frame.pack() 
frame.show() 

Répondre

5

Si vous mettez la table dans un scrollpane, les en-têtes apparaissent:

import groovy.swing.SwingBuilder 

data = [[first:'qwer', last:'asdf'], 
     [first:'zxcv', last:'tyui'], 
     [first:'ghjk', last:'bnm']] 

swing = new SwingBuilder() 
frame = swing.frame(title:'table test'){ 
    scrollPane { 
    table { 
     tableModel(list : data) { 
      propertyColumn(header:'First Name', propertyName:'first') 
      propertyColumn(header:'last Name', propertyName:'last') 
     } 
    } 
    } 
} 
frame.pack() 
frame.show() 

Voir point un on this page pour expliquer pourquoi

+0

Merci! Aussi, en fonction de votre référence, j'ai posté un exemple sans utiliser le scrollPane – Matthew

1

tête de table est un widget distinct qui doit être explicitement ajouté .

import groovy.swing.SwingBuilder 
import java.awt.BorderLayout 

data = [[first:'qwer', last:'asdf'], 
     [first:'zxcv', last:'tyui'], 
     [first:'ghjk', last:'bnm']] 

swing = new SwingBuilder() 
frame = swing.frame(title:'table test'){ 
    def tab = table(constraints:BorderLayout.CENTER) { 
     tableModel(list : data) { 
      propertyColumn(header:'First Name', propertyName:'first') 
      propertyColumn(header:'Last Name', propertyName:'last') 
     } 
    } 
    widget(constraints:BorderLayout.NORTH, tab.tableHeader) 
} 
frame.pack() 
frame.show()