2014-03-06 188 views
0

邊框我怎樣才能把組件/佈局忽略父組件的邊框被裁出來的時候?忽略與佈局

例如,我在每邊2px的邊框,但它不應該引起內部通過的2px轉移到右側和下方的組件。

+0

一個更具體的問題會得到一些答案。例如。您所使用的工具包等 – anttix

+0

它是一個'Border'或佈局組件或插圖/填充的插圖或利潤? – MadProgrammer

+0

@anttix正如我在標籤中指定的,這是一個Swing相關的問題。 – AyCe

回答

1

使用CompoundBorder的畫:

Border outer = new MatteBorder(2, 2, 2, 2, Color.RED); 
Border inner = new EmptyBorder(-2, -2, -2, -2); 
CompoundBorder border = new CompoundBorder(outer, inner); 
panel.setBorder(border); 

其他選項是使用嵌套佈局:

JPanel outer = new JPanel(new BorderLayout()); 
outer.setBorder(new MatteBorder(2, 2, 2, 2, Color.RED)); 
JPanel inner = new JPanel(); 
outer.add(inner); 

是的,這會仍然佔用與原來的方法相同的空間,但至少所有組件都將根據內部面板的大小進行佈局。

1

這是一個相當奇怪的規定(有效地4PX寬度和高度減小容器大小),所以我會小心再小心的大量普及 - 儘量避免,如果你能這樣做。

您可以覆蓋邊框的插圖,這不會影響組件或邊界,只有在組件繪製

LineBorder border = new LineBorder(Color.orange, 10){ 
    Insets overridenInset = new Insets(0, 0, 0, 0); 
    @Override 
    public Insets getBorderInsets(Component c) { 
     return overridenInset; 
    } 
};