swing - Prevent vertical spacing when resizing a Java GUI -


i have simple gui , trying create buttons , controls left side of window. right side has text area display content. left side contains buttons , controls user manipulate. have used collection of layout managers (and seem considerably picky) make have now.

i've looked on oracle's documentation on boxlayout left controls' container using, , don't see way prevent buttons spacing apart when window resized. i'd them smashed @ top , stay there without spacing out. boxlayout's 'glue' feature doesn't think does, should called rubber band.

my question is, how keep content on left separating wider , wider screen gets resized?

my gui:

public class testcode extends jframe{  jtextarea textarea = new jtextarea (); jcombobox <string> typecombobox; jtextfield searchfield; jtextfield filefield;  public testcode() {     system.out.println ("in constructor");     settitle ("gui test");     setsize (600, 300);     setdefaultcloseoperation (jframe.exit_on_close);     setvisible (true);      jscrollpane scrollpane = new jscrollpane(textarea);     add(scrollpane, borderlayout.center);      jbutton readbutton = new jbutton("read file");     jbutton displaybutton = new jbutton("display");     jbutton searchbutton = new jbutton("search");       searchfield = new jtextfield(10);     filefield = new jtextfield(15);      typecombobox = new jcombobox <string> ();     typecombobox.additem("index");     typecombobox.additem("type");     typecombobox.additem("name");      jpanel container = new jpanel();         container.setlayout(new boxlayout(container, boxlayout.y_axis));     jpanel filepanel = new jpanel();         filepanel.setlayout(new flowlayout(flowlayout.left));         filepanel.add(new jlabel("source file:", swingconstants.right));         filepanel.add(filefield);         filepanel.add(readbutton);     jpanel displaypanel = new jpanel();         displaypanel.setlayout(new flowlayout(flowlayout.left));         displaypanel.add(new jlabel("display data:", swingconstants.right));         displaypanel.add(displaybutton);     jpanel searchpanel = new jpanel();          searchpanel.setlayout(new flowlayout(flowlayout.left));         searchpanel.add(new jlabel ("search target"));         searchpanel.add(box.createhorizontalbox());         searchpanel.add(searchfield);         searchpanel.add(typecombobox);         searchpanel.add(box.createhorizontalbox());         searchpanel.add(searchbutton);      container.add(filepanel);     container.add(displaypanel);     container.add(searchpanel);     add(container, borderlayout.west);      validate(); } 

boxlayout uses preferredsize minumimu , maximum sizes to layout. in case panel grow preferred size maximum size more space available. prevent happening can do:

filepanel.setmaximumsize( filepanel.getpreferredsize() ); ... displaypanel.setmaximumsize( displaypanel.getpreferredsize() ); ... searchpanel.setmaximumsize( searchpanel.getpreferredsize() ); 

although better solution override getmaximumsize() of each panel return getpreferredsize(). never when might use application in different laf in case preferred size of each panel change.


Comments

Popular posts from this blog

java - activate/deactivate sonar maven plugin by profile? -

python - TypeError: can only concatenate tuple (not "float") to tuple -

java - What is the difference between String. and String.this. ? -