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 教程部分
- 所以首先绘制面板的背景。
- 然后在面板的顶部绘制边框。在 TitleBorder 的情况下,只有文本和线条被绘制在背景之上。
如果您不能接受,那么您需要创建一个自定义 Border
,首先:
用与 parent 组件的背景颜色相同的颜色绘制 Border 的外部区域。
然后画出TitleBorder
。
或者,也许您可以使用 CompoundBorder
.
以某种方式做到这一点
阅读 How to Use Borders 上的 Swing 教程部分了解更多信息。
我正在构建一个 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 教程部分- 所以首先绘制面板的背景。
- 然后在面板的顶部绘制边框。在 TitleBorder 的情况下,只有文本和线条被绘制在背景之上。
如果您不能接受,那么您需要创建一个自定义 Border
,首先:
用与 parent 组件的背景颜色相同的颜色绘制 Border 的外部区域。
然后画出
TitleBorder
。
或者,也许您可以使用 CompoundBorder
.
阅读 How to Use Borders 上的 Swing 教程部分了解更多信息。