Java swing背景色填充边框外

标签 java swing jframe border

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

由于某种原因,它溢出到边界之外,如下所示:

enter image description here

仅供引用,我需要保留 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 的部分

  1. 首先绘制面板的背景。
  2. 然后将边框绘制在面板的顶部。对于 TitleBorder,只有文本和线条绘制在背景之上。

如果这对您来说 Not Acceptable ,那么您需要创建一个自定义Border,首先:

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

  2. 然后绘制TitleBorder

或者,也许您可​​以通过使用 CompoundBorder 来做到这一点。

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

关于Java swing背景色填充边框外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61969424/

相关文章:

java - JFrame 在调整大小时重复绘图

Java JDBC 问题,第 1 行不包含所有列的数据

java - Prolog 和 Java 与 Eclipse (arch Linux)

java - Java 7 允许从 Number 转换为 double 吗? (自动装箱)

java - Click 中的 JButton 表单

java - 从 Arraylist 实现 jTable

java - 如何将 JEditorPane 保存为 pdf?

java - 尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.append(java.lang.CharSequence)'

Java收据程序不显示结果

java - 在 Netbeans JFrame 中显示一组图像