删除TitledBorder周围的间距

时间:2011-10-26 17:05:30

标签: java swing titled-border

javax.swing.border.TitledBorder在边框边缘引入2个像素的间距。这非常令人讨厌,因为它会破坏与周围组件的对齐。

如何删除此间距?

我正在寻找适用于任何外观和感觉的解决方案。

2 个答案:

答案 0 :(得分:6)

不幸的是,这个边缘宽度在TitledBorder类中是硬编码的。所以你不能删除这个间距。

public class TitledBorder extends AbstractBorder
{
    //...

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

但是你可以尝试扩展这个类(覆盖方法“void paintBorder(Component,Graphics,int,int,int,int)”或者可以是“Insets getBorderInsets(Component,Insets)”)或者实现你自己的边界划伤。

答案 1 :(得分:2)

这不是你问题的真正答案,而是一个建议:如果你想在组件之间保持对齐,那么:

  • 不使用边框
  • 整个对话框或框架只使用一个面板
  • 使用LayoutManager确保正确对齐(建议:DesignGridLayout,但还有其他优秀的LayoutManagers)
  • 如果您需要在视觉上对组件进行分组(与标题边框相同),则引入一行JLabel和水平JSeparator(这是来自Karsten Lentszch的建议,来自JGoodies成名)