我正在构建一个 Java Swing 应用程序,我正在尝试在边框内实现背景颜色,
由于某种原因,它溢出到边界之外,如下所示:
仅供引用,我需要保留 TitleBorder ->“TitledBorder.TOP”而不是“BELOW_TOP”
使用 IntelliJ IDEA 和 Java SDK 8 进行构建
感谢您的宝贵时间
最佳答案
for some reason it spills outside the border
这就是 Swing 绘画的工作方式。
所有 Swing 组件都具有父/子关系。因此,顶层组件被绘制,然后子组件被绘制在父组件之上,一直到父/子树。因此每个子级都会覆盖其父级的背景。
阅读 Swing 教程中关于 A Closer Look at the Painting Mechanism 的部分
- 首先绘制面板的背景。
- 然后将边框绘制在面板的顶部。对于 TitleBorder,只有文本和线条绘制在背景之上。
如果这对您来说 Not Acceptable ,那么您需要创建一个自定义Border
,首先:
用与父组件背景相同的颜色绘制边框的外部区域。
然后绘制
TitleBorder
。
或者,也许您可以通过使用 CompoundBorder
来做到这一点。
阅读 Swing 教程中关于 How to Use Borders 的部分了解更多信息。
关于Java swing背景色填充边框外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61969424/