java - Draw border below the text of a component in Swing -


i've created custom border class fill rectangle act background component. note border have more complex shape in future, not simple rectangle.

when add border component, text of component appear behind border , make text unreadable. (the result depicted in image below.)

is there way draw border below text?

http://i.stack.imgur.com/y9ehy.png

my border class:

public class customborder extends abstractborder {     private static final long serialversionuid = 1l;      @override     public void paintborder(component c, graphics g, int x, int y, int width, int height) {         graphics2d g2d = (graphics2d) g;         g2d.setcolor(new color(125, 125, 125, 255));         g2d.fillrect(x - 10, y - 10, width + 20, height + 20);     }      @override     public insets getborderinsets(component c) {         return super.getborderinsets(c);     }      @override     public insets getborderinsets(component c, insets insets) {         return super.getborderinsets(c, insets);     }      @override     public boolean isborderopaque() {         return super.isborderopaque();     } } 

main:

public static void main(string[] args) {     jlabel label = new jlabel("jlabel text");     label.setborder(new compoundborder(new emptyborder(50, 20, 20, 20), new customborder()));      jframe frame = new jframe("");     frame.setlayout(new flowlayout());     frame.setsize(200, 200);     frame.add(label);     frame.setvisible(true); } 

edit: should note using border chat program, using bubble-shaped messages, colored square using setbackground() no-no.

see a closer @ paint mechanism explains how painting done. border painted after text of label painted.

what trying do? border painting code doesn't make sense. trying fill rectangle equal width/height of component + 20 pixels, means trying paint area larger component.

if trying paint background on label can use:

label.setopaque( true ); label.setbackground(...); 

edit: code in this answer linked in comment section below solved problem.


Comments