java - Nesting FlowLayout Panels -


i'm trying create gui using java bmr calculator.

i'm having problems getting gui right have been experimenting different layout managers/nesting jpanels.

my current code has age , gender label, both contained in separate jpanels in flow layout, problem appear next eachother rather on seperate lines want them to.

how can acheive code? current laoyut below, want gender below age, , have been playing time can't work.

cheers.

enter image description here

package v2;  import javax.swing.*;  import java.awt.gridbagconstraints; import java.awt.gridbaglayout; import java.awt.flowlayout;     public class bmrcalcv2 extends jframe {  static jframe mainframe; static jpanel mainpanel;  static jmenubar menubar; static jmenu filemenu, editmenu;  static jpanel agepanel; private jlabel agelabel; private jtextfield agetextfield;  static jpanel genderpanel; private jlabel genderlabel;     public bmrcalcv2() {      // main jframe     mainframe = new jframe("bmr/tdee calculator");     mainpanel = new jpanel();       // jpanel declarations     menubar = new jmenubar();     agepanel = new jpanel();     genderpanel = new jpanel();      // jpanel layout managers     agepanel.setlayout(new flowlayout(10));     genderpanel.setlayout(new flowlayout(10));       // menu jpanel     filemenu = new jmenu("file");     editmenu = new jmenu("edit");     menubar.add(filemenu);     menubar.add(editmenu);      // age jpanel     agelabel = new jlabel("age:");     agetextfield = new jtextfield(5);     agepanel.add(agelabel);     agepanel.add(agetextfield);        // gender jpanel     genderlabel = new jlabel("gender:");     genderpanel.add(genderlabel);        // adding sub jpanels main jpanel     mainpanel.add(agepanel);     mainpanel.add(genderpanel);       // adding main jpanel/menubar jframe     mainframe.setjmenubar(menubar);     mainframe.add(mainpanel);  }      public static void main(string[] args) {      bmrcalcv2 frame = new bmrcalcv2();      mainframe.setdefaultcloseoperation(jframe.exit_on_close);     mainframe.setvisible(true);     mainframe.setsize(330, 300);;     mainframe.setresizable(false);      }  } 

if don't care alignment:

mainframe.getcontentpane().setlayout(new boxlayout(mainframe.getcontentpane(), boxlayout.x_axis)); // quick pseudocode incoming for(int x = 0; x < components.size(); x++) {     jpanel j = new jpanel();     j.setlayout(new flowlayout(flowlayout.center)); // think center default anyhow     j.add(getlabel(x));     j.add(getfield(x));     mainframe.add(j); } 

if care alignment, swap flowlayout boxlayout along y_axis , put horizontal glue between label , input field(s).


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -