有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

BorderFactory.createTitledBorder("  Your Title  ");

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

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

class CustomBorder implements Border
{
  ...
}

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

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

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


共 (2) 个答案

  1. # 1 楼答案

    虽然这条线索已经有点过时了,但如果有人无意中发现了它,可能会发现解决方案很有用:

    您可以向任何边框添加标题:

    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"));
      

    现在,您应该可以看到自定义边框及其上方的标题,以及Look&;的默认设置;感觉你正在使用

  2. # 2 楼答案

    可以创建带有圆角边的标题边框,而无需实现自己的边框类。只需将圆形边框传递给TitledBorder的构造函数。尝试以下方法:

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