使用JTabbedPane重叠选项卡

时间:2010-08-10 14:28:04

标签: java layout tabs jtabbedpane

使用JTabbedPane我们希望实现一个需要标签重叠的设计(在图片中可以找到:http://imm.io/YAZ)。

不完全是火箭科学,但我似乎无法找到解决方案(甚至在广泛的谷歌搜索之后)。

这是否可以使用JTabbedPane(可能通过PLAF)或者我们是否需要编写自定义组件?

感谢
托马斯

2 个答案:

答案 0 :(得分:0)

据我所知,它需要一个自定义组件。我认为可以通过扩展JTabbedPane并插入新类型的选项卡来完成。

使它重叠的方法是在最后选择的选项卡上调用paintComponent方法,即它最接近视图的前面。

对于重叠选项卡类,您可以为代码使用几乎任何JComponent子类。您甚至可以使用透明PNG作为背景进行主题设置,并在选项卡本身上调用public void setOpaque(boolean isOpaque)。

答案 1 :(得分:0)

通过在自定义UI实现中覆盖paintTab并在下一个选项卡上绘制上一个选项卡的一部分来解决此问题。这是可能的,因为paintTab允许您在整个选项卡区域上绘制,而不仅仅是在当前绘制的选项卡的边界上。例如,如果我们有选项卡A,B和C:

选项卡A绘制其左边框和中心填充。 选项卡B绘制其左边框,中心填充,然后选项卡A的右边框。 选项卡C绘制其左边框,中心填充,选项卡B的右边框,然后是它自己的右边框(因为这是窗格中的最后一个选项卡)。

然后稍微不同地处理选定的标签。

上述解决方案并不难实现并且运行良好。