java - Align components on the page top right with GridBagLayout Manager -


i trying make login page facebook, code have written not showing on top left side instead showing @ centre of page, using gridbaglayout , anchore setting text @ first_line_end.

final jframe f2=new jframe("admin main");                     f2.setsize(1350,730);                     f2.setvisible(true);                     f1.setvisible(false);                     f2.setdefaultcloseoperation(jframe.exit_on_close);![enter image description here][2]                     gridbaglayout gbl=new gridbaglayout();                     final jpanel p2=new jpanel(gbl){         private image img = imageio.read(new file("f:\\untitled folder\\rohan\\football2.jpg"));         @override                           protected void paintcomponent( graphics g ) {                super.paintcomponent(g);                g.drawimage(img, 0,0,1366,730, null);               }        };;                     gridbagconstraints g2=new gridbagconstraints();                     g2.insets=new insets(3,3,3,3);                     jlabel l2=new jlabel("admin id",jlabel.left);                     jlabel l3=new jlabel("password",jlabel.left);                     l2.setfont(new font("timesroman",font.bold,16));                     l2.setforeground(color.blue);                     l2.setbackground(color.white);                     l3.setfont(new font("timesroman",font.bold,16));                     l3.setforeground(color.blue);                     l3.setbackground(color.white);                     final jtextfield t1=new jtextfield(15);                     final jpasswordfield pw1=new jpasswordfield(15);                     jbutton b3=new jbutton("back");                     jbutton b4=new jbutton("sign in");                     f2.add(p2);                     g2.anchor=gridbagconstraints.first_line_end;                     g2.gridx=1;                     g2.gridy=1;                     p2.add(l2,g2);                     g2.gridx=2;                     g2.gridy=1;                     p2.add(t1,g2);                     g2.gridx=1;                     g2.gridy=2;                     p2.add(l3,g2);                     g2.gridx=2;                     g2.gridy=2;                     p2.add(pw1,g2);                     g2.gridx=1;                     g2.gridy=3;                     p2.add(b3,g2);                     g2.gridx=2;                     g2.gridy=3;                     p2.add(b4,g2); 

enter image description here

i see 2 problems in current layout:

  1. you put login panel in center of parent borderlayout (so panel gets stretched size of container)
  2. you have nothing in gridbaglayout "push" components top , left.

there several options here:

  1. you nest login panel several panels (for example using borderlayout, once constraint north , second time constraint west).
  2. add loginpanel west , add "filler" component bottom of gridbaglayout in order push other components top.

here demo of second solution:

import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.flowlayout; import java.awt.font; import java.awt.gridbagconstraints; import java.awt.gridbaglayout; import java.awt.insets; import java.net.malformedurlexception; import java.net.url;  import javax.swing.box; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jpasswordfield; import javax.swing.jtextfield; import javax.swing.swingutilities;  public class testlogingridbaglayout {      protected void initui() throws malformedurlexception {         jframe frame = new jframe("admin main");         frame.setdefaultcloseoperation(jframe.exit_on_close);         jlabel background = new jlabel(new imageicon(new url(                 "http://media1.santabanta.com/full1/football/football%20abstract/football-abstract-6a.jpg"))) {             @override             public dimension getpreferredsize() {                 dimension preferredsize = super.getpreferredsize();                 dimension layoutpreferredsize = super.preferredsize();                 preferredsize.width = math.max(preferredsize.width, layoutpreferredsize.width);                 preferredsize.height = math.max(preferredsize.height, layoutpreferredsize.height);                 return preferredsize;             }         };         background.setlayout(new borderlayout());         frame.add(background);         gridbaglayout gbl = new gridbaglayout();         final jpanel loginpanel = new jpanel(gbl);         loginpanel.setopaque(false);         background.add(loginpanel, borderlayout.west);         jlabel adminidlabel = new jlabel("admin id", jlabel.left);         jlabel passwordlabel = new jlabel("password", jlabel.left);         adminidlabel.setfont(new font("timesroman", font.bold, 16));         adminidlabel.setforeground(color.blue);         adminidlabel.setbackground(color.white);         passwordlabel.setfont(new font("timesroman", font.bold, 16));         passwordlabel.setforeground(color.blue);         passwordlabel.setbackground(color.white);         final jtextfield adminid = new jtextfield(15);         final jpasswordfield password = new jpasswordfield(15);         jpanel buttonpanel = new jpanel(new flowlayout(flowlayout.trailing));         buttonpanel.setopaque(false);         jbutton = new jbutton("back");         jbutton signin = new jbutton("sign in");         buttonpanel.add(back);         buttonpanel.add(signin);         gridbagconstraints gbc = new gridbagconstraints();         gbc.insets = new insets(3, 3, 3, 3);         gbc.anchor = gridbagconstraints.first_line_end;         loginpanel.add(adminidlabel, gbc);         gbc.gridwidth = gridbagconstraints.remainder;         loginpanel.add(adminid, gbc);         gbc.gridwidth = 1;         loginpanel.add(passwordlabel, gbc);         gbc.gridwidth = gridbagconstraints.remainder;         loginpanel.add(password, gbc);         loginpanel.add(buttonpanel, gbc);         gridbagconstraints gbcfiller = new gridbagconstraints();         gbcfiller.weightx = 1.0;         gbcfiller.weighty = 1.0;         gbcfiller.fill = gridbagconstraints.both;         loginpanel.add(box.createglue(), gbcfiller);         frame.pack();         frame.setvisible(true);     }      /**      * @param args      */     public static void main(string[] args) {         swingutilities.invokelater(new runnable() {             @override             public void run() {                 try {                     new testlogingridbaglayout().initui();                 } catch (malformedurlexception e) {                     e.printstacktrace();                 }             }         });     }  } 

i took liberty of:

  • rename variables meaningful names (it makes code easier read others)
  • replace custom background image panel jlabel
  • move buttons nested panel layoutmanager
  • take background image since don't have yours.

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -