使用JTabbedPane我們希望實現一個需要標籤重疊的設計(如圖所示:http://imm.io/YAZ)。帶JTabbedPane的重疊標籤
不完全是火箭科學,但我似乎無法找到解決方案(即使廣泛的谷歌搜索後)。
這是可能的使用JTabbedPane(通過PLAF也許)或我們需要編寫一個自定義組件?
感謝
托馬斯
使用JTabbedPane我們希望實現一個需要標籤重疊的設計(如圖所示:http://imm.io/YAZ)。帶JTabbedPane的重疊標籤
不完全是火箭科學,但我似乎無法找到解決方案(即使廣泛的谷歌搜索後)。
這是可能的使用JTabbedPane(通過PLAF也許)或我們需要編寫一個自定義組件?
感謝
托馬斯
據我所知,它需要的自定義組件。我認爲可以通過擴展JTabbedPane並插入一個新類型的選項卡來完成。
重疊的方式是通過在選定的選項卡上最後調用paintComponent方法,即它最接近視圖的前部。
至於重疊選項卡類,您可以使用幾乎任何JComponent子類爲您的代碼。你甚至可以用透明PNG的背景作爲主題,並在選項卡上調用public void setOpaque(boolean isOpaque)。
通過在自定義UI實現中覆蓋paintTab解決此問題,並在接下來的上一個選項卡上繪製部分內容。這是可能的,因爲paintTab允許你繪製整個標籤區域,而不僅僅是當前繪製的標籤邊界。例如,如果我們有選項卡A,B和C:
選項卡A繪製其左邊框和中心填充。 選項卡B繪製其左邊界,中心填充,然後標籤A的右邊界。 選項卡C繪製其左邊框,中心填充,選項卡B的右邊框,然後它自己的右邊框(因爲這是窗格中的最後一個選項卡)。
然後稍微不同地處理選定的選項卡。
上面的解決方案並不難實現,工作得很好。