2011-10-26 47 views
0

A javax.swing.border.TitledBorder在邊框邊緣周圍引入2個像素的間距。這非常煩人,因爲它打破了與周圍組件的對齊。刪除TitledBorder周圍的間距

你如何消除這種間距?

我正在尋找適用於任何外觀和感覺的解決方案。

+0

你必須創建自己的AbstractBorder中 – mKorbel

回答

6

不幸的是,這個邊緣寬度是在TitledBorder類中硬編碼的。所以你不能刪除這個間距。

public class TitledBorder extends AbstractBorder 
{ 
    //... 

    // Space between the border and the component's edge 
    static protected final int EDGE_SPACING = 2; 
} 

但是你可以嘗試擴展這個類(重寫方法 「無效的paintBorder(組件,圖形,INT,INT,INT,INT)」,或 「插圖的getBorderInsets(組件,插圖)」)或實施從頭開始你自己的邊界。

+0

謝謝你,我已延長的TitledBorder並重新實現的paintBorder()。 –

2

這是不是一個真正的回答你的問題,而是一個建議:如果你想保持對齊跨組件則:

  • 沒有使用邊界
  • 只用一個面板爲整個對話或框架
  • 使用LayoutManager確保正確對準(建議:DesignGridLayout,但也有其他很好的佈局管理以及)
  • ,如果您需要在視覺組組件(方式爲標題邊框相同),然後因特羅德UCE一排一個JLabel和水平JSeparator(這個人是卡斯滕Lentszch的建議,從JGoodies數據名聲)
+0

謝謝你的建議。擺脫標題邊界確實是一種解決方案,不幸的是,它對我的​​應用程序太具有破壞性。 –