java - JScrollPane increases its size -
i have panel divided 2 parts boxlayout.x_axis
:
public tabspanel() { setlayout(new boxlayout(this, boxlayout.x_axis)); add(createleftpanel()); add(createrightpanel()); }
each left , right panels have following structure: outer panel borderlayout
, , inner panel in borderlayout.center
of outer panel, in turn has boxlayout.y_axis
, several components top bottom. right panel has jtextarea
jscrollpane
1 of components:
protected jpanel createrightpanel() { jpanel pane = new jpanel(); pane.setlayout(new borderlayout()); jpanel panel = new jpanel(); panel.setlayout(new boxlayout(panel, boxlayout.y_axis)); jtextarea label = createlabel(); jscrollpane scroll = new jscrollpane(label); scroll.setmaximumsize(new dimension(500, 200)); panel.add(box.createrigidarea(new dimension(0,106))); panel.add(scroll); jpanel panel_buttons = new jpanel(); panel_buttons.setlayout(new boxlayout(panel_buttons, boxlayout.line_axis)); panel_buttons.setalignmentx(component.center_alignment); font font_text = new font("georgia", font.plain, 20); jbutton[] buttons = new jbutton[2]; buttons[0] = new jbutton("clear"); buttons[1] = new jbutton("exit"); (int = 0; < buttons.length; i++) { buttons[i].setmaximumsize(new dimension(120, 40)); buttons[i].setfont(font_text); panel_buttons.add(buttons[i]); if (i == 0) panel_buttons.add(box.createrigidarea(new dimension(40, 0))); buttons[i].addactionlistener(new textactionlistener(label)); } panel.add(box.createrigidarea(new dimension(0,20))); panel.add(panel_buttons); pane.add(panel, borderlayout.center); return pane; }
when text goes beyond borders, scroll bars appear , can move them , read text. looks ok, when either click place outside scroll pane or move pointer, scroll pane moves left , grows down. doesn't change width, shifts left because area between , right panel's borders increases. accordingly, size of left panel shrinks. when clear text area , again either click or move pointer, normal size.
what reason height grows , left , right margins increase? doing wrong?
update. i've found problem. thing didn't create jtextarea
correctly. initialized without parameters:
jtextarea text = new jtextarea("some initial text");
now have rewritten:
jtextarea text = new jtextarea(5,10);
it shifted left 5 mm , not changes height. still not perfect, looks on right track.
thank help!
boxlayout accepting min, max , preferredsize override methods jpanel
use jsplitpane, there can hide divider
Comments
Post a Comment