Thanks Greg, that answers part of my question. The other half was how to create
table at runtime without defining it in the wtkx file as I wouldn't know the #
of columns. As TableView doesn't has setColumns method so I wasn't sure the
best way. I ended up subclassing TableView and overriding the getColumns method
to do it.
On Oct 20, 2010, at 10:59 AM, Greg Brown wrote:
> Are you saying that you want to populate your table with rows that are
> defined as POJOs with a set of fixed bean properties as well as a
> variable-length list of indexed properties? For example:
>
> public class Foo {
> public int getA() { ... }
> public String getB() { ... }
> public String[] getC() { ... }
> }
>
> I assume that you want the table columns to contain "a", "b", and then n
> additional columns corresponding to the elements in the array. Is that
> correct? If so there are a couple of ways you could go about this:
>
> 1) Define a custom cell renderer that takes an array index as an argument.
> The render() method can cast the row object to an instance of Foo and call
> getC()[index] to get the cell data. Specify this renderer for each array
> element column in your table view.
>
> 2) Model your row object as a dictionary instead of a bean with an array
> property. For example:
>
> public class Foo implements Dictionary<String, Object> {
> public Object get(String key) { ... }
> }
>
> The get() method would map the "a" key to the getA() method, "b" to getB(),
> etc. and would map array index values to getC()[index].
>
> I think I'd suggest #2 since it sounds like it probably wouldn't require you
> to write any custom renderers. Also, if it is possible to model your variable
> properties as key/value pairs instead of indexed array elements, I would
> definitely recommend doing so. The contents of an array are mutable, so any
> caller can modify them directly without the bean's knowledge. Exposing them
> via the Dictionary interface only promotes better encapsulation.
>
> G
>
>
> On Oct 20, 2010, at 12:14 PM, Shahzad Bhatti wrote:
>
>> I need to create an editable table for my data structure that consists of
>> some fixed data elements and an array of variable size. Can someone provide
>> an example or tips for creating the table programmatically, where I can set
>> dynamic number of columns. Also, I would like to create a column for each
>> element of the variable-size array. How would I define accessor/setter for
>> that property (e..g instead of setArray/getArray, which takes or returns
>> arrays). Thanks.
>> ______________________________________________
>>
>> See http://www.peak6.com/email_disclaimer.php
>> for terms and conditions related to this email
>