java - JPanel which layout -
say have frame , want create 6 panels in so:
which layout best? tried this:
public static void main ( string[] args ) { jframe frame = new jframe("testing"); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setpreferredsize(new dimension(800,600)); frame.setlayout(new flowlayout(flowlayout.left)); jpanel lefttop = new jpanel(); lefttop.setpreferredsize(new dimension(251,300)); lefttop.setbackground(color.black); frame.getcontentpane().add(lefttop); jpanel middletop = new jpanel(); middletop.setpreferredsize(new dimension(251,300)); middletop.setbackground(color.white); frame.getcontentpane().add(middletop); jpanel righttop = new jpanel(); righttop.setpreferredsize(new dimension(251,300)); righttop.setbackground(color.red); frame.getcontentpane().add(righttop); jpanel leftbottom = new jpanel(); leftbottom.setpreferredsize(new dimension(251,300)); leftbottom.setbackground(color.green); frame.getcontentpane().add(leftbottom); jpanel middlebottom = new jpanel(); middlebottom.setpreferredsize(new dimension(251,300)); middlebottom.setbackground(color.yellow); frame.getcontentpane().add(middlebottom); jpanel rightbottom = new jpanel(); rightbottom.setpreferredsize(new dimension(251,300)); rightbottom.setbackground(color.black); frame.getcontentpane().add(rightbottom); frame.pack(); frame.setvisible(true); }
but if change size of panel not turn out nice haha.
say have jframe, , want 6 jpanels in so:
the way create gui divide , conquer.
you must start swing application call swingutilities invokelater method, put creation , execution of swing components on event dispatch thread. yes, small testing programs.
i created 3 jpanels left, center, , right. each of these jpanels uses borderlayout.
yes, had specify preferred size 6 inner jpanels. because 6 inner jpanels don't have internal swing components. in swing, should let swing components size themselves.
i enclosed left, center, , right jpanels in main jpanel. generally, should not add swing components jframe, other jpanel , jscrollpane. unexplanable bad things happen when violate rule. i'd rather find , fix own coding mistakes use java classes in unusual way.
here's code.
package com.ggl.testing; import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.flowlayout; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.swingutilities; public class layouttest implements runnable { public static void main(string[] args) { swingutilities.invokelater(new layouttest()); } @override public void run() { jframe frame = new jframe("layout test"); frame.setdefaultcloseoperation(jframe.exit_on_close); jpanel mainpanel = new jpanel(); mainpanel.add(createleftpanel()); mainpanel.add(createcenterpanel()); mainpanel.add(createrightpanel()); frame.add(mainpanel); frame.pack(); frame.setvisible(true); } private jpanel createleftpanel() { jpanel panel = new jpanel(); panel.setlayout(new borderlayout()); jpanel lefttop = new jpanel(); lefttop.setpreferredsize(new dimension(251, 250)); lefttop.setbackground(color.black); panel.add(lefttop, borderlayout.north); jpanel leftbottom = new jpanel(); leftbottom.setpreferredsize(new dimension(251, 350)); leftbottom.setbackground(color.green); panel.add(leftbottom, borderlayout.south); return panel; } private jpanel createcenterpanel() { jpanel panel = new jpanel(); panel.setlayout(new borderlayout()); jpanel middletop = new jpanel(); middletop.setpreferredsize(new dimension(251, 400)); middletop.setbackground(color.cyan); panel.add(middletop, borderlayout.north); jpanel middlebottom = new jpanel(); middlebottom.setpreferredsize(new dimension(251, 200)); middlebottom.setbackground(color.yellow); panel.add(middlebottom, borderlayout.south); return panel; } private jpanel createrightpanel() { jpanel panel = new jpanel(); panel.setlayout(new borderlayout()); jpanel righttop = new jpanel(); righttop.setpreferredsize(new dimension(251, 100)); righttop.setbackground(color.red); panel.add(righttop, borderlayout.north); jpanel rightbottom = new jpanel(); rightbottom.setpreferredsize(new dimension(251, 500)); rightbottom.setbackground(color.black); panel.add(rightbottom, borderlayout.south); return panel; } }
Comments
Post a Comment