JTabbedPane:标签本身之前和之后的组件

这类似于如何在Java Swing中构建Google-chrome选项卡和菜单栏界面的问题? (我想要完成相同的工作),但更重要的是:如何将组件放在JTabbedPane中的选项卡的前面和后面?

我自己已经想出了按钮的想法,但我宁愿拥有一个JTabbedPane,因为它确实是它的样子,但是边上还有一个按钮或图标。

我已经看到Kirill的laf-widget项目为几个LaF做了类似的事情(标签左边的放大镜图标)。 但是,我必须承认,我还不够精通,无法理解他是如何做到的 – 而且这似乎是一个有点复杂的过程,其中一个“物理”改变了有问题的LaF(字节码操纵它),注入了laf -widget进入UI委托 – 我仍然不知道如何实际调制JTabbedPane或TabbedPaneUI以注入该图标/按钮。

我终于问了Kirill of Substance LaF / laf-widget他如何设法在装饰JTabbedPanes的laf-widget中的标签前放置一个按钮,这是他的回复:

它依赖于BasicTabbedPaneUI.tabAreaInsets字段为按钮腾出空间,并依赖于按钮组件的自定义setBounds以将其自身定位在该区域中。

有关更多代码,请参阅laf-widget项目中的TabOverviewButton和TabOverviewDialogWidget类。

通常,选项卡式窗格UI委托是最不具吸引力的之一,因为它有很多私有和包受保护的方法

谢谢,基里尔!

JIDE有一个选项卡式窗格作为其组件套件的一部分,它将此function公开为简单的setBeforeComponent()和setAfterComponent()方法。

这里有一个演示: http : //www.jidesoft.com/products/1.4/jide_demo.jnlp