java - Two JPanels in JFrame , One under other -
i've got 2 panels in frame, , set them 1 under other, , first should have size 9/10*screen frame, , second 1/10.
i've tried gridlayout (2 rows , 1 column) can't set them specific size.
how should that?
ok maybe write code:
i writing game - pacman, , in first panel there whole game, , in second display player info(like score, name etc.) first set on 80% screen, , second on 20%.
what more frame should resizeable , in it, sa have change size of panels(keeping 80% 20%) when size of frame changing. wrote initcomponents().
package pacman; import java.awt.borderlayout; import java.awt.dimension; import java.awt.eventqueue; import java.awt.gridlayout; import java.awt.toolkit; import javax.imageio.imageio; import javax.swing.jframe; import java.awt.image; import java.awt.event.componentadapter; import java.awt.event.componentevent; public class pacman extends jframe implements items { image image; public pacman() { initcomponents(); try { image = imageio.read( pac.class.getresourceasstream("/img/pac02.gif")); } catch (exception e) { system.out.println("blad prz otwieraniu " + e); system.exit(0); } int screen_width = toolkit.getdefaulttoolkit().getscreensize().width; int screen_height = toolkit.getdefaulttoolkit().getscreensize().height; this.setlocation(screen_width/3, screen_height/3); this.setlayout(new borderlayout()); this.getcontentpane().add(panel, borderlayout.center); this.getcontentpane().add(panel2, borderlayout.page_end); setdefaultcloseoperation(jframe.exit_on_close); this.seticonimage(image); settitle("..::pacman::.."); setdefaultcloseoperation(exit_on_close); this.setpreferredsize(new dimension(416,438)); this.pack(); setlocationrelativeto(null); setvisible(true); } private void initcomponents() { setdefaultcloseoperation(jframe.exit_on_close); this.addcomponentlistener(new componentadapter() { @override public void componentresized(componentevent e) { int width = e.getcomponent().getsize().width; int height = e.getcomponent().getsize().height; panel.setsize(width, height*8/10) ; panel2.setsize(width, height*2/10); } }); } public static void main(string[] args) { eventqueue.invokelater(new runnable() { @override public void run() { new pacman(); } }); } }
gridlayout wrong layout if want different sized components. javadoc states:
the container divided equal-sized rectangles, , 1 component placed in each rectangle.
if you've got jpanel
s, might want consider jsplitpane
- see javadoc or tutorial.
edit: based on edit/code, jsplitpane looks solution problem. can set divider location after creation using setdividerlocation(double)
- see javadoc - e.g.
jsplitpane split = new jsplitpane(jsplitpane.vertical); split.settopcomponent(toppanel); split.setbottomcomponent(bottompanel); split.setdividerlocation(0.8);
alternatively, since it's quite hard suggest layout without knowing intentions gui, should consider taking @ visual guide layouts.
Comments
Post a Comment