代码之家  ›  专栏  ›  技术社区  ›  Stephane Grenier

如何在Java Swing中创建一个完整的标题边界

  •  4
  • Stephane Grenier  · 技术社区  · 14 年前

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

    BorderFactory.createTitledBorder("  Your Title  ");
    

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

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

    class CustomBorder implements Border
    {
      ...
    }
    

    问题是,我不知道如何编写重写该方法的代码:

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

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

    2 回复  |  直到 12 年前
        1
  •  6
  •   EMurnane    14 年前

    在不实现自己的border类的情况下,可以使用圆角创建标题边框。只需将圆形边框传递给titledborder的构造函数。请尝试以下操作:

    LineBorder roundedLineBorder = new LineBorder(Color.black, 5, true);
    TitledBorder roundedTitledBorder = new TitledBorder(roundedLineBorder, "Title");
    
        2
  •  3
  •   Larzan    12 年前

    虽然这个线程已经有点老了,但也许有人会发现这个解决方案很有用:

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

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

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

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

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

    现在,您应该可以看到自定义边框,并且在标题上方显示您正在使用的外观的默认设置。