这类似于问题如何在Java Swing中构建Google- chrome标签和菜单栏界面?(我想实现相同的目的),但更重要的是:如何在JTabbedPane中的选项卡的前面和后面放置组件?
我已经自己想到了按钮的想法,但是我宁愿有一个JTabbedPane,因为它确实是它的意思,但是在侧面装饰有按钮或图标。
我已经看到,基里尔(Kirill)的laf-widget项目对多个LaF都执行了类似的操作(选项卡左侧的放大镜图标)。但是,我必须承认,我还不太了解他的工作方式- 而且似乎是一个有点复杂的过程,在此过程中,一个人“物理地”更改了相关的LaF(字节码对其进行了操作),注入了laf。 -widget到UI委托中- 而且我仍然不知道JTabbedPane或TabbedPaneUI是如何实际调制以注入该图标/按钮的。
我最后问了Substance LaF / laf- widget的Kirill,他如何设法在装饰JTabbedPanes的laf-widget的选项卡前面放置一个按钮,这是他的回答:
它依靠BasicTabbedPaneUI.tabAreaInsets字段为按钮腾出空间,并依靠按钮组件的自定义setBounds将该自身放置在该区域中。 有关更多代码,请参见laf-widget项目中的TabOverviewButton和TabOverviewDialogWidget类。 通常,选项卡式窗格的UI委托是最缺乏吸引力的增强方法之一,因为它具有许多私有和受程序包保护的方法
它依靠BasicTabbedPaneUI.tabAreaInsets字段为按钮腾出空间,并依靠按钮组件的自定义setBounds将该自身放置在该区域中。
有关更多代码,请参见laf-widget项目中的TabOverviewButton和TabOverviewDialogWidget类。
通常,选项卡式窗格的UI委托是最缺乏吸引力的增强方法之一,因为它具有许多私有和受程序包保护的方法
谢谢,基里尔!