As you can see it's quite a simple design so shouldn't be too difficult to achieve?
Creating a custom UI is always a problem. You need to implement the change for all LAF's you intend to support.
You would start by looking at BassicTabbedPaneUI
. There you will find the various paintTab...(...)
methods. Then you need to look at your LAF, for example the MetalTabbedPaneUI to see if the LAF uses the default implementation or does a custom implementation. Once you know this you override the appropriate class and implement your custom painting code.
Then in your code you have something like:
JTabbedPane tabbedPane = new JTabbedPane(...);
tabbedPane.setUI( new MyCustomTabbedPaneUI() );