【问题标题】:How to create a rounded title border in Java Swing如何在 Java Swing 中创建圆形标题边框
【发布时间】:2012-05-12 00:19:54
【问题描述】:

我知道要创建标题边框,您可以执行以下操作:

BorderFactory.createTitledBorder("  Your Title  ");

但是,这会创建一个矩形边框,而我需要一个带有弯角的矩形。

现在据我了解,您可以通过以下方式创建自己的自定义边框:

class CustomBorder implements Border
{
  ...
}

问题是我不确定如何编写覆盖该方法的代码:

public void paintBorder(Component component, Graphics g, int x, int y, int width, int height)

或者更好的是,有没有办法在不实现自己的 Border 类的情况下做到这一点?如果没有,您将如何编写自定义标题边框?我可以画一个带圆角的矩形,但是你怎么做才能让标签也有空间呢?

【问题讨论】:

  • 请忽略这个问题。一旦你创建了 RounderBorder 类,Swing 就会为你移除标题文本下的边框。
  • 其实忽略我最后的评论。仅当您使用 BorderFactory 创建边框(例如 LineBorder)时,它才会这样做。猜猜是时候看看 LineBorder 是怎么画的了……

标签: java swing


【解决方案1】:

可以在不实现自己的 Border 类的情况下创建带有圆角边缘的标题边框。只需将圆形边框传递给 TitledBorder 的构造函数。请尝试以下操作:

LineBorder roundedLineBorder = new LineBorder(Color.black, 5, true);
TitledBorder roundedTitledBorder = new TitledBorder(roundedLineBorder, "Title");

【讨论】:

    【解决方案2】:

    虽然这个帖子有点老了,但也许偶然发现它的人可能会发现这个解决方案很有用:

    您可以为任何您想要的边框添加标题:

    1. 实现您的自定义边框类public class MyBorder extends AbstractBorder {...public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) 方法,您可以在 Graphics 上下文中绘制自己的自定义边框

    2. 创建此自定义边框的实例

      Border myborder = new MyBorder();
      
    3. 使用您的自定义边框作为模板创建 TitledBorder 并将其添加到您想要的对象(在本例中为 JPanel:

      jPanel1.setBorder(BorderFactory.createTitledBorder(myborder , "Border title"));
      

    您现在应该会看到您的自定义边框以及标题上方以及您正在使用的外观的默认设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多