java - Valign JPanel not working -


i trying align jpanel vertically. setalignmenty not working expected. here have done far.

import java.awt.color; import java.awt.component; import java.awt.gridlayout; import javax.swing.boxlayout; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jtextfield; import javax.swing.border.lineborder;  public class valignjpanel {      public static void main(string args[]) {         jframe frame = new jframe("vertical alignment");         frame.setdefaultcloseoperation(jframe.exit_on_close);          jpanel panel1 = wrappanel(createpanel(), component.top_alignment);         jpanel panel2 = wrappanel(createpanel(), component.center_alignment);         jpanel panel3 = wrappanel(createpanel(), component.bottom_alignment);          frame.setlayout(new gridlayout(1, 3));         frame.add(panel1);         frame.add(panel2);         frame.add(panel3);          frame.setsize(400, 150);         frame.setvisible(true);     }      private static jpanel wrappanel(jpanel oldpanel, float alignment) {         jpanel panel = new jpanel();         oldpanel.setalignmenty(alignment);         panel.add(oldpanel);         return panel;     }      private static jpanel createpanel() {         jpanel panel = new jpanel();         panel.setlayout(new boxlayout(panel, boxlayout.y_axis));         panel.add(new jlabel("hello world"));         panel.add(new jtextfield(10));         panel.setborder(new lineborder(color.red));         return panel;     } } 

i trying create wrapper method takes jpanel & wraps given alignment.

edit (from comment, image) trying output looks this, in place of button, want have jpanel

enter image description here

what need set layout boxlayout new jpanel in wrappanel method.

jpanel panel = new jpanel(); boxlayout layout = new boxlayout(panel, boxlayout.line_axis); panel.setlayout(layout); 

bug: current code doesn't seem work because it'll stretch text field. if use jbutton in place of jtextfeild see effect. i'm still trying figure out why text field that.


update along above code, fix problem of text field stretching, answered camickr in this answer

boxlayout 1 of few layout managers respects minimum , maximum sizes of component. if want prevent panel stretching can use:

panel.setmaximumsize( panel.getpreferredsize() ); 

the above code want put in createpanel method.

enter image description here

import java.awt.color; import java.awt.component; import java.awt.gridlayout; import javax.swing.boxlayout; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jtextfield; import javax.swing.border.lineborder;  public class valignjpanel {      public static void main(string args[]) {         jframe frame = new jframe("vertical alignment");         frame.setdefaultcloseoperation(jframe.exit_on_close);          jpanel panel1 = wrappanel(createpanel(), component.top_alignment);         jpanel panel2 = wrappanel(createpanel(), component.center_alignment);         jpanel panel3 = wrappanel(createpanel(), component.bottom_alignment);          frame.setlayout(new gridlayout(1, 3));         frame.add(panel1);         frame.add(panel2);         frame.add(panel3);         frame.setsize(400, 150);         frame.setvisible(true);     }      private static jpanel wrappanel(jpanel oldpanel, float alignment) {         jpanel panel = new jpanel();         boxlayout layout = new boxlayout(panel, boxlayout.line_axis);         panel.setlayout(layout);         oldpanel.setalignmenty(alignment);         panel.add(oldpanel);         return panel;     }      private static jpanel createpanel() {         jpanel panel = new jpanel();         panel.setlayout(new boxlayout(panel, boxlayout.y_axis));         panel.add(new jlabel("hello world"));         panel.add(new jtextfield(10));         panel.setborder(new lineborder(color.red));         panel.setmaximumsize( panel.getpreferredsize());         return panel;     } } 

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -