Docking Frames is an excellent Java docking framework. There are a few other docking frameworks out there also, like FlexDock, MyDoggy, and VLDocking, but from all of them I found DockingFrames to be the best for my requirements.
DockingFrames just works. I found very little inconsistency and bugs in it. Also it uses static variables very judiciously which was important for our use, since we might want to use docking in multiple places in the application, such that each of those do not know of each other. I also found the lead contributor to be very responsive. He was extremely prompt in answering questions and always gave good suggestions.
DockingFrames uses the concept of themes for docking. A theme specifies things like icons, buttons, tabs, etc that appear in the panels that contain the docked components. In the beginning I used the BasicTheme and the FlatTheme. However, BasicTheme uses angular tabs (for selecting components that are docked in tabs), which I liked more than the Flat tabs in FlatTheme. However BasicTheme uses more borders around the docked components than FlatTheme. I wanted a combination of these two themes. Something with angular tabs but fewer borders.
Implementing such a theme is possible by creating custom themes.
In the next few blog posts I will talk about how I created a custom theme in DockingFrames.