java - JTextPane autoscroll works only one time -
i have 2 jtextpane , set them autoscroll vertically, reason don't undertstand 1 working.
what reason?
jtextpane texta = new jtextpane(); texta.setname(text); texta.setcontenttype("text/html"); defaultcaret caret = (defaultcaret)texta.getcaret(); caret.setupdatepolicy(defaultcaret.always_update); jscrollpane filler = new jscrollpane (texta, jscrollpane.vertical_scrollbar_always, jscrollpane.horizontal_scrollbar_never); jtextpane textb = new jtextpane(); textb.setname(text + "_t"); textb.setfont(texta.getfont()); defaultcaret caret_t = (defaultcaret)textb.getcaret(); caret_t.setupdatepolicy(defaultcaret.always_update); jscrollpane filler_t = new jscrollpane (textb, jscrollpane.vertical_scrollbar_always, jscrollpane.horizontal_scrollbar_never); panel.add(filler); panel.add(filler_t);
filler_t (textb) 1 working
you have not used layout panel
. jscrollpane filler_t
placed on jscrollpane filler
, jtextpane texta
not visible.
use layout, illustration add together lines in code:
panel.setlayout(new borderlayout(0, 0)); panel.add(filler,borderlayout.north); panel.add(filler_t,borderlayout.center);
your window like:
full running code:
import java.awt.borderlayout; import java.awt.eventqueue; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.jtextpane; import javax.swing.border.emptyborder; import javax.swing.text.defaultcaret; public class testscroll extends jframe { private jpanel panel; public static void main(string[] args) { eventqueue.invokelater(new runnable() { public void run() { seek { testscroll frame = new testscroll(); frame.setvisible(true); } grab (exception e) { e.printstacktrace(); } } }); } public testscroll() { setdefaultcloseoperation(jframe.exit_on_close); panel = new jpanel(); panel.setborder(new emptyborder(5, 5, 5, 5)); panel.setlayout(new borderlayout(0, 0)); setcontentpane(panel); jtextpane texta = new jtextpane(); texta.setname("text"); texta.setcontenttype("text/html"); defaultcaret caret = (defaultcaret)texta.getcaret(); caret.setupdatepolicy(defaultcaret.always_update); jscrollpane filler = new jscrollpane (texta, jscrollpane.vertical_scrollbar_always, jscrollpane.horizontal_scrollbar_never); jtextpane textb = new jtextpane(); textb.setname("text" + "_t"); textb.setfont(texta.getfont()); defaultcaret caret_t = (defaultcaret)textb.getcaret(); caret_t.setupdatepolicy(defaultcaret.always_update); jscrollpane filler_t = new jscrollpane (textb, jscrollpane.vertical_scrollbar_always, jscrollpane.horizontal_scrollbar_never); panel.add(filler,borderlayout.north); panel.add(filler_t,borderlayout.center); pack(); } }
also improve understanding read layoutmanagers
java swing jscrollpane jtextpane autoscroll
No comments:
Post a Comment