java - Can't center JButtons -


i need centering jbuttons. right now, centered horizontally, refuse center vertically. here code 2 classes game , menu. also, there anyway put spaces between buttons using blocklayout.

game class:

package main; import java.awt.*; import javax.swing.jframe; import javax.swing.jpanel;  public class game extends jframe{      private static final long serialversionuid = -7071532049979466544l;     public static final int width = 1280, height = width/12 * 9;     private handler handler;     public state state = state.menu;     jpanel screen;      //state of game     public enum state{         menu,         deckconstructor,         game;     }      //game launch     public game() {          screen = new jpanel(new cardlayout());         screen.add(new menu(this).getmenu(), "menu");         screen.add(new deckconstructor(this).getdeckconstructor(), "deck_constructor");          getcontentpane().add(screen,borderlayout.center);         setpreferredsize(new dimension(width, height));         setdefaultcloseoperation(jframe.exit_on_close);         setresizable(false);         pack();         setvisible(true);      }      public static void main(string[]args){         new game();     } } 

menu class:

package main; import java.awt.event.*; import java.awt.*;  import javax.swing.*; import javax.swing.border.emptyborder;   public class menu extends jframe implements actionlistener{      private jpanel buttonpanel;     private jbutton play;     private jbutton deckconstructor;     private jbutton quit;     private game game;       public menu(game game){         this.game = game;         buttonpanel = new jpanel();          play = new jbutton("play");         play.addactionlistener(this);         deckconstructor = new jbutton("deck constructor");         deckconstructor.addactionlistener(this);         quit = new jbutton("quit");         quit.addactionlistener(this);          buttonpanel.add(play);         buttonpanel.add(deckconstructor);         buttonpanel.add(quit);         buttonpanel.setlayout(new boxlayout(buttonpanel, boxlayout.y_axis));         play.setalignmentx(component.center_alignment);         deckconstructor.setalignmentx(component.center_alignment);         quit.setalignmentx(component.center_alignment);      }      public jpanel getmenu(){         return buttonpanel;     }      @override     public void actionperformed(actionevent e) {         // todo auto-generated method stub         if(deckconstructor.equals((jbutton) e.getsource())){             cardlayout c1 = (cardlayout)(game.screen.getlayout());             c1.show(game.screen, "deck_constructor");         }      } } 

instead of boxlayout, used gridbaglayout , gridbagconstraints.

code:

public menu(game game) {     this.game = game;     buttonpanel = new jpanel(new gridbaglayout());      play = new jbutton("play");     play.addactionlistener(this);      deckconstructor = new jbutton("deck constructor");     deckconstructor.addactionlistener(this);      quit = new jbutton("quit");     quit.addactionlistener(this);      gridbagconstraints c = new gridbagconstraints();     c.gridx = 0;     c.gridy = 0;     c.anchor = gridbagconstraints.center;     // top, left, bottom, right     c.insets = new insets(0, 0, 50, 0);     buttonpanel.add(play, c);      c = new gridbagconstraints();     c.gridx = 0;     c.gridy = 1;     c.anchor = gridbagconstraints.center;     // top, left, bottom, right     c.insets = new insets(0, 0, 50, 0);     buttonpanel.add(deckconstructor, c);      c = new gridbagconstraints();     c.gridx = 0;     c.gridy = 2;     c.anchor = gridbagconstraints.center;     buttonpanel.add(quit, c); } 

to center it, used gridbagconstraints#anchor , add spacing, used gridbagconstraints#insets.

the original frame:

enter image description here

frame using gridbaglayout:

enter image description here


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -