2014-03-06 137 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; 
    } 
};