The "proper" way to do it is probably to subclass JTable and override the method that implements the UI for the table header.
I don't see anything at all improper about taking the JTableHeader
and making use of it for specialized purposes. JTable
goes to the trouble of giving us a getTableHeader
method, and we have all the listeners we need to draw extra widgets around the JTableHeader
that move as the columns move. The whole system seems designed to make this sort of thing possible.
On the other hand, subclassing is dangerous and error prone. I don't claim to have any special knowledge about what is proper, but using subclassing is asking for trouble.