我有一個包含兩個JLabel的JPanel。該面板使用BorderLayout。當我調整面板,使其沒有足夠的垂直空間來顯示兩個標籤BorderLayout - 防止「中心」組件被「切斷」
一個JLabel的投入BorderLayout.CENTER
位置,另外在BorderLayout.PAGE_END
,居中的標籤總是被覆蓋(切斷)通過PAGE_END
位置的標籤。
由於居中標籤中顯示的信息比另一個更重要,我希望居中標籤重疊(或切斷)下面的標籤。
BorderLayout(和GridBagLayout)似乎總是從「上到下」繪製組件,而那些「稍後」繪製的組件將覆蓋之前繪製的組件。
有沒有什麼方法可以說服BorderLayout(或任何其他LayoutManager)假定某個組件應始終位於「頂部」?
我嘗試使用
panel.setComponentZOrder(label1, 1);
panel.setComponentZOrder(label2, 0);
但這並不有所作爲。
感謝您的鏈接,有趣的破解+1 – mKorbel 2012-02-04 20:23:22
感謝您的鏈接。我也在想我自己的LayoutManager,但只是不想走上這條路。不確定PreferredSizeGridLayout是否會有幫助,因爲我實際上希望第二個標籤不*優先考慮大小。但是,也許我可以把一些東西放在一起,只對「主要」標籤的首選尺寸加以尊重。 – 2012-02-04 20:50:23
我已經在上面添加了我的測試代碼。該設計的一個吸引人的方面是由'BoundableInterface'提供的隱式策略模式。您可能會使用庫存佈局管理器在一段時間內解決這個問題。 – trashgod 2012-02-05 00:33:42