java - JPanel which layout -


say have frame , want create 6 panels in so: enter image description here

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:

layout test gui

the way create gui divide , conquer.

  1. you must start swing application call swingutilities invokelater method, put creation , execution of swing components on event dispatch thread. yes, small testing programs.

  2. i created 3 jpanels left, center, , right. each of these jpanels uses borderlayout.

  3. 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.

  4. 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

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 -