如何在布局时告诉组件/布局忽略父组件的边框?
例如,我的每边都有一个2px的边框,但它不应该导致内部组件向右和向下移动2px。 (有效地将容器尺寸减小4px宽度和高度)
答案 0 :(得分:1)
这是一个相当奇怪的要求,所以我会非常谨慎 - 尽量避免这样做。
您可以覆盖边框的插图,这不会影响组件或边框的绘制,只有在绘制组件的位置
LineBorder border = new LineBorder(Color.orange, 10){
Insets overridenInset = new Insets(0, 0, 0, 0);
@Override
public Insets getBorderInsets(Component c) {
return overridenInset;
}
};
答案 1 :(得分: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);
是的,这仍将占用与原始方法相同的空间,但至少所有组件都将根据内部面板的大小进行布局。