2010-08-10 137 views
2

使用JTabbedPane我们希望实现一个需要标签重叠的设计(如图所示:http://imm.io/YAZ)。带JTabbedPane的重叠标签

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

这是可能的使用JTabbedPane(通过PLAF也许)或我们需要编写一个自定义组件?

感谢
托马斯

回答

0

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

重叠的方式是通过在选定的选项卡上最后调用paintComponent方法,即它最接近视图的前部。

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

0

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

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

然后稍微不同地处理选定的选项卡。

上面的解决方案并不难实现,工作得很好。