如何在JavaSwing中创建圆形标题边框

如何在JavaSwing中创建圆形标题边框,java,swing,Java,Swing,我知道要创建标题边框,您可以执行以下操作: BorderFactory.createTitledBorder(" Your Title "); 但是,这会创建一个矩形边框,而我需要一个带有弯曲拐角的矩形 现在,据我所知,您可以通过以下方式创建自己的自定义边框: class CustomBorder implements Border { ... } 问题是我不确定如何编写重写该方法的代码: public void paintBorder(Component component, Gr

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

BorderFactory.createTitledBorder("  Your Title  ");
但是,这会创建一个矩形边框,而我需要一个带有弯曲拐角的矩形

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

class CustomBorder implements Border
{
  ...
}
问题是我不确定如何编写重写该方法的代码:

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

或者更好的是,有没有一种方法可以在不实现自己的Border类的情况下实现它?如果没有,你会如何写自定义标题边框?我可以用圆角绘制一个矩形,但如何才能使标签也有空间?

不必实现自己的边框类,就可以创建带有圆角的标题边框。只需将一个圆形边框传递给TitledBorder的构造函数。请尝试以下操作:

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

虽然此线程已经有点旧了,但可能有人在遇到它时会发现解决方案很有用:

您可以将标题添加到所需的任何边框:

  • 实现自定义边框类
    公共类MyBorder扩展AbstractBorder{…
    并在
    公共void paintBorder(组件c、图形g、int x、int y、int w、int h)
    方法,您可以在图形上下文上绘制自己的自定义边框

  • 创建此自定义边框的实例

    Border myborder = new MyBorder();
    
  • 使用自定义边框作为模板创建标题边框,并将其添加到所需对象(在本例中为JPanel:

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

  • 现在,您应该可以看到自定义边框及其上方的标题,标题具有您正在使用的外观和感觉的默认设置。

    请忽略此问题。创建RounderOrder类后,Swing将为您删除标题文本下的边框。实际上,忽略我的上一条注释。仅当您使用BorderFactory创建bord时,它才会执行此操作呃,比如线框。我想是时候看看线框是怎么画的了。。。