2010-08-10 157 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的右邊框,然後它自己的右邊框(因爲這是窗格中的最後一個選項卡)。

然後稍微不同地處理選定的選項卡。

上面的解決方案並不難實現,工作得很好。