2010-06-16 61 views
4

圆角标题边框,我也明白,要创建一个标题边界,你这样做:如何创建的Java Swing

BorderFactory.createTitledBorder(" Your Title "); 

但是这将创建一个矩形边框,而我需要具有圆角的矩形。

从我的理解,你可以创建自己的自定义边框

现在:

class CustomBorder implements Border 
{ 
    ... 
} 

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

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

或更好的是,有没有办法做到这一点,而无需实现自己的Border类?如果不是,你会如何编写自定义标题边框?我可以画一个带圆角的长方形,但是你怎么做才能让标签有空间?

+0

请忽略此问题。一旦创建了RounderBorder类,Swing将为您删除标题文本下的边框。 – 2010-06-16 20:08:14

+0

其实不理我最后的评论。只有在使用BorderFactory创建边框时才会执行此操作,例如LineBorder。猜是时候看看LineBorder是如何绘制的... – 2010-06-16 20:36:17

回答

6

可以使用圆角创建标题边框而无需实现自己的Border类。只需将一个圆形边框传递给TitledBorder的构造函数即可。请尝试以下操作:

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

虽然这个线程是有点已经老了,也许有人谁绊倒可能找到有用的解决方案:

您可以添加标题,以任何边界你想:

  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. 的情况下使用您的自定义边框为模板创建的TitledBorder并把它添加到你想要的对象(在这种情况下,一个JPanel:

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

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