java - Delayed TitledBorder title update/refresh, why? -
i have jpanel title border inside jpanel b of jtabbedpanel c. have method refreshing content of , b called time-to-time.
unfortunately, items of , b refreshed in time, not title of a. explicitely have switch tabbed panel , come c a's title displayed properly. why?
the code using following:
titledborder tmp = (titledborder) this.groupingprofilepanel.getborder(); // resetting header if ( this.c != null ) { tmp.settitle("set - " + this.c.getname()); } else { tmp.settitle("set"); }
after updating title, verify invoke repaint() on component having titled border or 1 of ancestors.

import java.awt.borderlayout; import java.awt.eventqueue; import java.awt.event.actionevent; import java.util.date; import javax.swing.abstractaction; import javax.swing.borderfactory; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.border.titledborder; /** @see http://stackoverflow.com/questions/6566612 */ public class titledbordertest { public static void main(string[] args) { eventqueue.invokelater(new runnable() { public void run() { new titledbordertest().create(); } }); } private void create() { string s = "this titledborder update test."; final jlabel label = new jlabel(s); final titledborder tb = borderfactory.createtitledborder(new date().tostring()); label.setborder(tb); jframe f = new jframe("titled border test"); f.setdefaultcloseoperation(jframe.exit_on_close); f.add(label); f.add(new jbutton(new abstractaction("update") { public void actionperformed(actionevent e) { tb.settitle(new date().tostring()); label.repaint(); } }), borderlayout.south); f.pack(); f.setlocationrelativeto(null); f.setvisible(true); system.out.println(tb.getminimumsize(f)); } }
Comments
Post a Comment