Sunday, 15 January 2012

java - JTextPane autoscroll works only one time -



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