删除 TitledBorder 周围的间距

发布于 2024-12-12 15:24:34 字数 139 浏览 2 评论 0原文

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

如何去掉这个间距?

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

A javax.swing.border.TitledBorder introduces a spacing of 2 pixels around the edges of the border. This is quite annoying because it breaks the alignment with the components around.

How do you remove this spacing?

I'm looking for a solution that works for any look and feel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月寒剑心 2024-12-19 15:24:34

不幸的是,这个边缘宽度是硬编码在 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)”)或从头开始实现您自己的边框。

Unfortunately this edge width is hardcoded in TitledBorder class. So you can not remove this spacing.

public class TitledBorder extends AbstractBorder
{
    //...

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

But you can try to extend this class (override methods "void paintBorder(Component, Graphics, int, int, int, int)" or may be "Insets getBorderInsets(Component, Insets)") or implement your own border from scratch.

小女人ら 2024-12-19 15:24:34

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

  • 不要使用边框
  • ,整个对话框或框架仅使用一个面板
  • ,使用 LayoutManager 来确保正确对齐(建议:DesignGridLayout,但也有其他好的布局管理器)
  • 如果您需要直观地对组件进行分组(与标题边框相同的方式),则引入带有 JLabel 的行和一个水平的 JSeparator (这是来自 JGoodies 名气的 Karsten Lentszch 的建议)

That's not a real answer to your question but rather a suggestion: if you want to keep alignments across components then:

  • don't use borders
  • use only one panel for the whole dialog or frame
  • use a LayoutManager that ensures correct alignment (suggestion: DesignGridLayout, but there are other good LayoutManagers as well)
  • if you need to visually group components (the same way as a titled border), then introduce a row with a JLabel and a horizontal JSeparator (this one is a suggestion of Karsten Lentszch, from the JGoodies fame)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文