I do understand that to create a title border, you do something like:
BorderFactory.createTitledBorder(" Your Title ");
However this creates a rectangle border whereas I need a rectangle with curved corners.
Now from what I 开发者_开发百科understand you can create your own custom border by:
class CustomBorder implements Border
{
...
}
The problem is that I'm not sure how to write the code that overrides the method:
public void paintBorder(Component component, Graphics g, int x, int y, int width, int height)
Or better yet, is there a way to do it without implementing your own Border class? And if not, how would you write that custom Title Border? I'm ok with drawing a rectangle with rounded corners, but how do you do it so that there's space for the label too?
It is possible to create a title border with rounded edges without implementing your own Border class. Simply pass a rounded border to TitledBorder's constructor. Try the following:
LineBorder roundedLineBorder = new LineBorder(Color.black, 5, true);
TitledBorder roundedTitledBorder = new TitledBorder(roundedLineBorder, "Title");
Although this thread is a bit old already, maybe someone who stumbles over it might find the solution useful:
You can add a title to any border you want:
implement your custom border class
public class MyBorder extends AbstractBorder {...
and in thepublic void paintBorder(Component c, Graphics g, int x, int y, int w, int h)
method you can paint your own custom border on the Graphics contextcreate an instance of this custom border
Border myborder = new MyBorder();
create the TitledBorder using your custom border as a template and add it to the object you want (in this case a JPanel:
jPanel1.setBorder(BorderFactory.createTitledBorder(myborder , "Border title"));
You should now see your custom Border and above that the Title with the default settings of the Look&Feel you are using.
精彩评论