我想知道是否存在能够扩展的Swing组件,以便能够隐藏或取消隐藏菜单等内容。可扩展组件隐藏或取消隐藏其他组件
类似的例子可以的东西在MS Outlook中找到:
这是默认的样子,所有的邮件文件夹取消隐藏。但点击小箭头(圆圈红)隐藏这一观点:
我想在我的Java的GUI做同样类似的东西,而包括组件应该默认为隐藏。我不确定哪个组件应该在可扩展的“标签”下,但现在我正在考虑JTree。
这就是我通常尝试的。但是如果你想要一个额外的烹饪,你可以考虑这个可扩展菜单必须在流畅,流畅的动画中扩展的需求,而不是立即隐藏或不隐藏。后者可以在TeamViewer中找到。在顶部有一个菜单栏,它可以隐藏或不隐藏,而它可以在平滑的动画中上下移动。
实施例,的TeamViewer:
EDIT
首先我试图JSplitPane
,但移动所有现有的部件以适应拆分窗格模式不是一个解决方案,我会喜欢。相反,我正在寻找更独立的东西。
我尝试的下一件事是使用Swing Timer
来扩大JFrame
的宽度,使用它的setBounds
-方法。当涉及到为菜单切换额外空间时,它的工作方式与我想要的完全相同。在调整大小过程动画时,JFrame
变大或变小。但是我可以看到这种方法的两个缺点:
- 动画有点慢,不是很完美。我删除了延迟。目前为止还不错,但在这里首选更顺畅的解决方案。但我完全可以接受它如何现在。
- 一个很大的缺点是,尺寸的增加在旧的和新的宽度之间留下了半个黑色的空间半秒钟。如果有人知道如何避免这种情况,我会完美解决这个问题。
这样可以很清楚我的意思与“黑色空间”,请参阅:
现在你可以看到黑色区域。就像我说的那样,它只剩下半秒钟甚至更短的时间。使用Swing Timer时,我在JFrame的宽度上添加了100个像素。我给宽度增加的值越高,黑色区域就越高。如果JFrame
的宽度已完全调整大小,则所有内容都会以正确的颜色再次显示。
因此,有谁知道为什么会发生这种情况?这个硬件是相关的还是仅仅是Java或Swing的标准行为?有谁知道这个解决方案或解决方法?
[阿帕奇枢轴(https://pivot.apache.org/)具有手风琴和扩展器。 –