Java 摆动背景颜色填充边框外

Java swing background color fill outside the border

我正在构建一个 Java Swing 应用程序,我正在尝试在边框内实现背景颜色,

由于某种原因,它溢出了边界,您可以在此处看到:

仅供参考,我需要保留 TitleBorder -> "TitledBorder.TOP" 而不是 "BELOW_TOP"

使用 Java SDK 8

使用 IntelliJ IDEA 构建

感谢您的宝贵时间

for some reason it spills outside the border

这就是 Swing 绘画的工作方式。

所有 Swing 组件都具有 parent / child 关系。所以顶层组件被绘制,然后 child 被绘制在 parent 之上等等,一直向下到 parent/child 树。所以每个 child 覆盖其 parent.

的背景

阅读 A Closer Look at the Painting Mechanism

上的 Swing 教程部分
  1. 所以首先绘制面板的背景。
  2. 然后在面板的顶部绘制边框。在 TitleBorder 的情况下,只有文本和线条被绘制在背景之上。

如果您不能接受,那么您需要创建一个自定义 Border,首先:

  1. 用与 parent 组件的背景颜色相同的颜色绘制 Border 的外部区域。

  2. 然后画出TitleBorder

或者,也许您可​​以使用 CompoundBorder.

以某种方式做到这一点

阅读 How to Use Borders 上的 Swing 教程部分了解更多信息。