java - BoxLayout Left Alignment -


i'm trying left align class , neutral buttons in line left card button. reason, setalignmentx shifts buttons half way. here code. there away align buttons?

private string[] listentries = {"a","a","a","a","a"}; private jbutton remove = new jbutton("remove"); private jlist list; private jbutton b1 = new jbutton("class"); private jbutton b2 = new jbutton("neutral"); private jpanel page = new jpanel(new cardlayout()); private defaultlistmodel listmodel = new defaultlistmodel();  public main () {      jpanel leftpanel = new jpanel();     jpanel rightpanel = new jpanel();     rightpanel.setlayout(new boxlayout(rightpanel,boxlayout.page_axis));     leftpanel.setlayout(new boxlayout(leftpanel,boxlayout.page_axis));     rightpanel.setborder(borderfactory.createemptyborder(10,10,10,10));     leftpanel.setborder(borderfactory.createemptyborder(10, 10, 10, 10));     jlabel title  = new jlabel("deck constructor", swingconstants.center);     title.setborder(borderfactory.createemptyborder(10,0,0,0));      //set deck list      list = new jlist(listmodel);     list.setselectionmode(listselectionmodel.single_interval_selection);     list.setlayoutorientation(jlist.vertical);     list.setvisiblerowcount(-1);      jscrollpane listscroller = new jscrollpane(list);     listscroller.setpreferredsize(new dimension(150, 80));      jlabel listtitle = new jlabel("list");     listtitle.setlabelfor(list);     listscroller.setalignmentx(left_alignment);       rightpanel.add(listtitle);     rightpanel.add(listscroller);     rightpanel.add(remove);      //set card selection     jpanel buttonpanel = new jpanel();     buttonpanel.setalignmentx(component.right_alignment);      b1.setactioncommand("class");     b2.setactioncommand("neutral");     b1.addactionlistener(this);     b2.addactionlistener(this);     buttonpanel.add(b1);     buttonpanel.add(b2);      jpanel classcards = new jpanel(new gridlayout(2,3, 10, 10));     jbutton card1 = new jbutton("card 1");     card1.addactionlistener(this);     card1.setactioncommand("addcard");     jbutton card2 = new jbutton("card 2");     jbutton card3 = new jbutton("card 3");     jbutton card4 = new jbutton("card 4");     jbutton card5 = new jbutton("card 5");     jbutton card6 = new jbutton("card 6");     classcards.add(card1);     classcards.add(card2);     classcards.add(card3);     classcards.add(card4);     classcards.add(card5);     classcards.add(card6);       jpanel neutral = new jpanel();     neutral.setbackground(color.blue);     page.add(classcards, "class");     page.add(neutral, "neutral");      leftpanel.add(buttonpanel);     leftpanel.add(page);       setpreferredsize(new dimension(640,640/12*9));     setdefaultcloseoperation(jframe.exit_on_close);      getcontentpane().add(leftpanel,borderlayout.center);     getcontentpane().add(rightpanel,borderlayout.east);     getcontentpane().add(title,borderlayout.north);     pack();     setvisible(true); } 

it not perfect solution, can use example:

  1. if want keep buttons default size:

    jpanel buttonpanel = new jpanel(new flowlayout(flowlayout.leading,1,2)); 

    and delete:

    buttonpanel.setalignmentx(component.right_alignment); 
  2. if want fill buttonpanel buttons:

    jpanel buttonpanel = new jpanel(new gridlayout(1,2,2,2)); buttonpanel.setborder(new emptyborder(2,1,2,1)); 

in (flowlayout.leading,1,2) , in emptyborder(2,1,2,1))the 1,2 values added match buttonpanel , classcard hgap , vgap.


Comments