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.
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
Post a Comment