使用 JTabbedPane,我们想要实现一个需要选项卡重叠的设计(可以在此处找到的图像中说明:http: //imm.io/YAZ)。
不完全是火箭科学,但我似乎找不到解决方案(即使经过广泛的谷歌搜索)。
这是否可以使用 JTabbedPane(可能通过 PLAF)或者我们需要编写自定义组件?
谢谢
托马斯
使用 JTabbedPane,我们想要实现一个需要选项卡重叠的设计(可以在此处找到的图像中说明:http: //imm.io/YAZ)。
不完全是火箭科学,但我似乎找不到解决方案(即使经过广泛的谷歌搜索)。
这是否可以使用 JTabbedPane(可能通过 PLAF)或者我们需要编写自定义组件?
谢谢
托马斯
据我所知,它需要一个自定义组件。我认为可以通过扩展 JTabbedPane 并插入一种新型选项卡来完成。
使其重叠的方法是最后调用所选选项卡上的paintComponent 方法,即它将最靠近视图的前面。
至于重叠选项卡类,您几乎可以在代码中使用任何 JComponent 子类。您甚至可以使用透明 PNG 作为背景,并在选项卡本身上调用 public void setOpaque(boolean isOpaque)。
通过在自定义 UI 实现中覆盖 paintTab 并将前一个选项卡的一部分绘制在下一个选项卡上解决了这个问题。这是可能的,因为paintTab 允许您在整个选项卡区域上绘制,而不仅仅是在它当前正在绘制的选项卡的边界内。例如,如果我们有选项卡 A、B 和 C:
选项卡 A 绘制其左边框和中心填充。选项卡 B 绘制其左边框、中心填充,然后是选项卡 A 的右边框。Tab C 绘制它的左边框、中心填充、Tab B 的右边框,然后是它自己的右边框(因为这是窗格中的最后一个选项卡)。
然后稍微不同地处理选定的选项卡。
上述解决方案实施起来并不难,而且效果很好。