jColumns - Easily show and hide JTable columns
jColumns is a simple Java API that enables any JTable to offer iTunes style column filtering. The complete column state (column visibility, ordering, and width) are automatically saved in real time, and are automatically reloaded at the next application invocation. Typically only 2 lines of Java code are required to achieve this full functionality. The user can bring up the popup menu by right clicking on any point within the column header.

Implementing this in your application is mind numbingly simple:
Integer[] col = {0,1,3}; // Model columns to show by default
JColumns columns = new JColumns(table,"com.niftyapp.tablename", Arrays.asList(col));
Where table is the name of your JTable, "com.niftyapp.tablename" is a unique String, and the column list tells jColumns what model columns should be shown by default. That's it. jColumns takes care of saving user changes and will automatically load them at the next startup.

Requirements
jColumns was written for Java 1.6, but should work on 1.5. Versions 1.4 and below are not supported.
License
jColumns is licensed under the GPL version 3. For non-open source projects (freeware, shareware, commercialware) contact me (jason@swinggeek.com) for instructions on how to obtain a distribution license.
Download
Version 1.0 (Released January 15th, 2009)
Source: jColumns-1.0_src.zip
Binary: jColumns-1.0.zip