0

这类似于问题How to build a Google-chrome tabs and menubar interface in Java Swing? (我想完成同样的事情),但更重要的是:如何将组件放在 JTabbedPane 中选项卡的前面和后面?

我自己已经提出了按钮的想法,但我宁愿有一个 JTabbedPane,因为它确实是这样,但在侧面装饰了一个按钮或图标。

我已经看到来自 Kirill 的laf-widget项目为几个 LaF 做了类似的事情(选项卡左侧的放大镜图标)。然而,我必须承认,我还不够精通理解他是如何做到的——而且这似乎是一个有点复杂的过程,一个人“物理地”改变有问题的 LaF(字节码操纵它),注入 laf - 将小部件放入 UI 代表 - 我仍然不知道 JTabbedPane 或 TabbedPaneUI 是如何实际调制以注入该图标/按钮的。

4

2 回答 2

1

我最后问了Substance LaF /laf-widget 的 Kirill,他是如何设法在装饰 JTabbedPanes 的 laf-widget 的选项卡前面放置一个按钮的,这是他的回答:

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

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

一般来说,选项卡式窗格 UI 委托是最不吸引人的增强之一,因为它有很多私有和包保护方法

谢谢,基里尔!

于 2009-05-21T08:14:13.233 回答
1

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

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

于 2009-05-21T08:26:24.987 回答