我想知道是否存在能夠擴展的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/)具有手風琴和擴展器。 –