java - Cleaning up a Nested J panel -


rebuilt scce guys.

my goal target layout1 target layout2

the general idea clicking on title bars of menus (right side) collapsible (set visible false) content panes associated them:
gender_panel_bg collapses gender_panel_body
race_panel_bg collapses race_panel_body
class_panel_bg collapses class_panel_body
base_stats_panel_bg collapses base_stats_panel_body
merits_panel_bg collapses merits_panel_body

you idea

another thing bugging me huge space @ top of body , it's content.


gradient bar img source title gradient source

background source source bg source

import java.awt.borderlayout; import java.awt.color; import java.awt.eventqueue; import java.awt.gridbagconstraints; import java.awt.gridbaglayout; import java.awt.gridlayout; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception; import javax.swing.border.emptyborder; import javax.swing.border.lineborder; import java.awt.*; import javax.swing.*; import javax.swing.text.*; import java.awt.graphics; import java.awt.point; import java.awt.event.*;  public class jagcharcreation  {      //set inital size of window     dimension screensize = toolkit.getdefaulttoolkit().getscreensize();     int initalwidth = (int) screensize.width - 50;     int initalheight = (int) screensize.height - 50;     jpanel gender_panel_body;     gridbagconstraints gbc;     jlabel viewdata_gender = new jlabel("gender");     imageicon bgicon = new imageicon("parchmenttall.jpg");     image img1 = bgicon.getimage();      public static void main(string[] args) {         new jagcharcreation ();     }      //set thread safe invoking gui     public jagcharcreation () {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                 }                  jframe frame = new jframe("testing");                 frame.setdefaultcloseoperation(jframe.exit_on_close);                 frame.setlayout(new borderlayout());                 frame.add(new testpane());                 frame.pack();                 //frame.setlocationrelativeto(null);                 frame.setvisible(true);                 // give frame initial size.                 frame.setsize(initalwidth, initalheight);             }         });     }      //main panel hold others     public class testpane extends jpanel {         public testpane() {             setlayout(new gridlayout(0, 2));             add(createleftpane());             add(createrightpane());         }//end of class master frame  /////////////////////////////////left panel nest begin//////////////////////////////////////////////////////////////         protected jpanel createleftpane() {         img1 = img1.getscaledinstance(initalwidth/2, initalheight, java.awt.image.scale_smooth);         final imageicon bgiconsm = new imageicon(img1);              jpanel panel = new jpanel(new borderlayout())                           {                             protected void paintcomponent(graphics g)                                 {                                 //  dispaly image @ full size                                 g.drawimage(bgiconsm.getimage(), 0, 0, null);                                 super.paintcomponent(g);                                 }                             };             panel.setopaque( false );             panel.setborder(new emptyborder(35, 80, 35, 80));             //panel.setbackground(color.red);             return  panel;         }//end left pane /////////////////////////////////left panel nest end////////////////////////////////////////////////////////////// /////////////////////////////////right panel nest begin//////////////////////////////////////////////////////////////         protected jpanel createrightpane() {             img1 = img1.getscaledinstance(initalwidth/2, initalheight, java.awt.image.scale_smooth);             final imageicon bgiconsm = new imageicon(img1);             jpanel content = new jpanel(new gridbaglayout());             content.setopaque(false);              jpanel panel = new jpanel(new borderlayout())                           {                             protected void paintcomponent(graphics g)                                 {                                 //  dispaly image @ full size                                 g.drawimage(bgiconsm.getimage(), 0, 0, null);                                 super.paintcomponent(g);                                 }                             };             panel.setopaque( false );             panel.setborder(new emptyborder(35, 80, 35, 80));             //panel.setbackground(color.blue);              //set our image title bars             imageicon icon = new imageicon("gradientdetail.png");             image img = icon.getimage();             img = img.getscaledinstance(initalwidth/2, 40, java.awt.image.scale_smooth);             final imageicon iconsm = new imageicon(img);  /////////////////////////////////gender panel nest begins//////////////////////////////////////////////////////////////             jpanel gender_panel_bg = new jpanel(new borderlayout())                 {                 protected void paintcomponent(graphics g)                     {                     //  dispaly image @ full size                     g.drawimage(iconsm.getimage(), 0, 0, null);                     super.paintcomponent(g);                     }                 };             gender_panel_bg.setopaque( false );              jlabel gender_panel_label = new jlabel("gender");             gender_panel_label.setfont(new font("impact", font.bold, 30));             gender_panel_label.setforeground(color.white);             gender_panel_label.setopaque(false);              gender_panel_body = new jpanel(new gridlayout(1, 3));             gender_panel_body.setbackground(color.white);              gender_panel_bg.add(gender_panel_label, borderlayout.north);              jpanel gender_panel = new jpanel(new gridlayout(2, 1));             //gender_panel.setborder(new emptyborder(0, 10, 0, 10));             //gender_panel.setbackground(color.green);             gender_panel.setopaque(false);             gender_panel.add(gender_panel_bg);             gender_panel.add(gender_panel_body);              mouseadapter gender = new mouseadaptermod(){            public void mousepressed(mouseevent e) {                    //system.out.println(e.getsource());                    system.out.println("a mouse pressed");                 gender_panel_body.setvisible(!gender_panel_body.isvisible());            }//end of mousepressed(mouseevent e)         };          // create radio buttons , add them content pane.         jradiobutton g1 = new jradiobutton("male");         g1.addactionlistener(new actionlistener() {                     public void actionperformed(actionevent ae) {                     viewdata_gender.settext("gender: male");                  }//action perfomed;             });//g1 add action listener         gender_panel_body.add(g1);          jradiobutton g2 = new jradiobutton("female");         g2.addactionlistener(new actionlistener() {                     public void actionperformed(actionevent ae) {                     viewdata_gender.settext("gender: female");                  }//action perfomed;             });//g2 add action listener         gender_panel_body.add(g2);          jradiobutton g3 = new jradiobutton("<unknown>");         g3.addactionlistener(new actionlistener() {                     public void actionperformed(actionevent ae) {                     viewdata_gender.settext("gender: <unknown>");                  }//action perfomed;             });//g3 add action listener         gender_panel_body.add(g3);          // define button group.         buttongroup genderbuttons = new buttongroup();         genderbuttons.add(g1);         genderbuttons.add(g2);         genderbuttons.add(g3);              gender_panel_bg.addmouselistener(gender);             content.add(gender_panel, gbc); /////////////////////////////////gender panel nest end////////////////////////////////////////////////////////////// /////////////////////////////////race panel nest begins//////////////////////////////////////////////////////////////             jpanel race_panel_bg = new jpanel(new borderlayout())                 {                 protected void paintcomponent(graphics g)                     {                     //  dispaly image @ full size                     g.drawimage(iconsm.getimage(), 0, 0, null);                     super.paintcomponent(g);                     }                 };             race_panel_bg.setopaque( false );              jlabel race_panel_label = new jlabel("race");             race_panel_label.setfont(new font("impact", font.bold, 30));             race_panel_label.setforeground(color.white);             race_panel_label.setopaque(false);              jpanel race_panel_body = new jpanel(new gridlayout(5, 8));             race_panel_body.setbackground(color.white);              race_panel_bg.add(race_panel_label, borderlayout.north);              jpanel race_panel = new jpanel(new gridlayout(2, 1));             //race_panel.setborder(new emptyborder(0, 10, 0, 10));             //race_panel.setbackground(color.green);             race_panel.setopaque(false);             race_panel.add(race_panel_bg);             race_panel.add(race_panel_body);              (int i=0; <= 60; i++){                 imageicon rcicon = new imageicon("headshot.jpg");                 image rcimg = rcicon.getimage();                 rcimg = rcimg.getscaledinstance(40, 40, java.awt.image.scale_smooth);                 final imageicon rciconsm = new imageicon(rcimg);                 jbutton button = new jbutton(rciconsm);                 button.setborder(borderfactory.createemptyborder());                 button.setcontentareafilled(false);                 race_panel_body.add(button);             };//for loop              mouseadapter race = new mouseadaptermod();             race_panel_body.addmouselistener(race);             content.add(race_panel, gbc); /////////////////////////////////race panel nest end////////////////////////////////////////////////////////////// /////////////////////////////////class panel nest begins//////////////////////////////////////////////////////////////             jpanel class_panel_bg = new jpanel(new borderlayout())                 {                 protected void paintcomponent(graphics g)                     {                     //  dispaly image @ full size                     g.drawimage(iconsm.getimage(), 0, 0, null);                     super.paintcomponent(g);                     }                 };             class_panel_bg.setopaque( false );              jlabel class_panel_label = new jlabel("class");             class_panel_label.setfont(new font("impact", font.bold, 30));             class_panel_label.setforeground(color.white);             class_panel_label.setopaque(false);              jpanel class_panel_body = new jpanel(new gridlayout(5, 8));             class_panel_body.setbackground(color.white);              class_panel_bg.add(class_panel_label, borderlayout.north);              jpanel class_panel = new jpanel(new gridlayout(2, 1));             //class_panel.setborder(new emptyborder(0, 10, 0, 10));             //class_panel.setbackground(color.green);             class_panel.setopaque(false);             class_panel.add(class_panel_bg);             class_panel.add(class_panel_body);              (int g=0; g <= 50; g++){                 imageicon ccicon = new imageicon("headshot.jpg");                 image ccimg = ccicon.getimage();                 ccimg = ccimg.getscaledinstance(40, 40, java.awt.image.scale_smooth);                 final imageicon cciconsm = new imageicon(ccimg);                 jbutton cbutton = new jbutton(cciconsm);                 cbutton.setborder(borderfactory.createemptyborder());                 cbutton.setcontentareafilled(false);                 class_panel_body.add(cbutton);             };//for loop              mouseadapter cclass = new mouseadaptermod();             class_panel_body.addmouselistener(cclass);             content.add(class_panel, gbc); /////////////////////////////////class panel nest end////////////////////////////////////////////////////////////// /////////////////////////////////base stats panel nest begins//////////////////////////////////////////////////////////////             jpanel base_stats_panel_bg = new jpanel(new borderlayout())                 {                 protected void paintcomponent(graphics g)                     {                     //  dispaly image @ full size                     g.drawimage(iconsm.getimage(), 0, 0, null);                     super.paintcomponent(g);                     }                 };             base_stats_panel_bg.setopaque( false );              jlabel base_stats_panel_label = new jlabel("base attributes");             base_stats_panel_label.setfont(new font("impact", font.bold, 30));             base_stats_panel_label.setforeground(color.white);             base_stats_panel_label.setopaque(false);              jpanel base_stats_panel_body = new jpanel(new gridlayout(1, 2));             base_stats_panel_body.setbackground(color.white);              base_stats_panel_bg.add(base_stats_panel_label, borderlayout.north);              jpanel base_stats_panel = new jpanel(new gridlayout(2, 1));             //base_stats_panel.setborder(new emptyborder(0, 10, 0, 10));             //base_stats_panel.setbackground(color.green);             base_stats_panel.setopaque(false);             base_stats_panel.add(base_stats_panel_bg);             base_stats_panel.add(base_stats_panel_body);              mouseadapter base_stats = new mouseadaptermod();             base_stats_panel_body.addmouselistener(base_stats);             content.add(base_stats_panel, gbc); /////////////////////////////////base stats panel nest end////////////////////////////////////////////////////////////// /////////////////////////////////merits panel nest begins//////////////////////////////////////////////////////////////             jpanel merits_panel_bg = new jpanel(new borderlayout())                 {                 protected void paintcomponent(graphics g)                     {                     //  dispaly image @ full size                     g.drawimage(iconsm.getimage(), 0, 0, null);                     super.paintcomponent(g);                     }                 };             merits_panel_bg.setopaque( false );              jlabel merits_panel_label = new jlabel("advantages , disadvantages");             merits_panel_label.setfont(new font("impact", font.bold, 30));             merits_panel_label.setforeground(color.white);             merits_panel_label.setopaque(false);              jpanel merits_panel_body = new jpanel(new borderlayout());             merits_panel_body.setbackground(color.white);              merits_panel_bg.add(merits_panel_label, borderlayout.north);              jpanel merits_panel = new jpanel(new gridlayout(2, 1));             //merits_panel.setborder(new emptyborder(0, 10, 0, 10));             //merits_panel.setbackground(color.green);             merits_panel.setopaque(false);             merits_panel.add(merits_panel_bg);             merits_panel.add(merits_panel_body);              mouseadapter merits = new mouseadaptermod();             merits_panel_body.addmouselistener(merits);             content.add(merits_panel, gbc); /////////////////////////////////merits panel nest end////////////////////////////////////////////////////////////// /////////////////////////////////group panel nest begin//////////////////////////////////////////////////////////////             jpanel viewdata = new jpanel(new gridlayout(5, 1));             viewdata.add(gender_panel);             viewdata.add(race_panel);             viewdata.add(class_panel);             viewdata.add(base_stats_panel);             viewdata.add(merits_panel);              panel.add(new jscrollpane(viewdata));             return panel; /////////////////////////////////group panel nest end//////////////////////////////////////////////////////////////         }//end right pane /////////////////////////////////right panel nest end//////////////////////////////////////////////////////////////          public class mouseadaptermod extends mouseadapter {            // better off mousepressed rather clicked            public void mousepressed(mouseevent e) {                    //system.out.println(e.getsource());                    system.out.println("a mouse pressed");                if (e.getsource() == "gender_panel_bg"){                 gender_panel_body.setvisible(!gender_panel_body.isvisible());                }//end of  if (e.getsource() == "gender")            }//end of mousepressed(mouseevent e)         }//end of mouseadaptermod extends mouseadapter     }//end master panel set }//end master class 

now need figure out how select multiple jbuttons. it's not quite check box, want have images instead of tick boxes.

jtogglebutton, parent of jcheckbox, works this, each button knows selected state. can nest gridlayout instances in vertical box, shown below.

image

import java.awt.dimension; import java.awt.eventqueue; import java.awt.gridlayout; import java.awt.event.actionevent; import javax.swing.abstractaction; import javax.swing.box; import javax.swing.boxlayout; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.jtogglebutton; import javax.swing.uimanager; import javax.swing.border.titledborder;  /** @see http://stackoverflow.com/a/16733710/230513 */ public class test {      private static final int n = 4;      private void display() {         jframe f = new jframe("test");         f.setdefaultcloseoperation(jframe.exit_on_close);         box b = new box(boxlayout.y_axis);         b.add(createpanel());         b.add(createpanel());         f.add(new jscrollpane(b){              @override             public dimension getpreferredsize() {                 return new dimension(400, 500);             }         });         f.pack();         f.setlocationrelativeto(null);         f.setvisible(true);     }      private jpanel createpanel() {         jpanel p = new jpanel(new gridlayout(n, n));         p.setborder(new titledborder(string.valueof(p.hashcode())));         (int = 0; < n * n; i++) {             p.add(createbutton());         }         return p;     }      private jtogglebutton createbutton() {         jtogglebutton b = new jtogglebutton(new abstractaction() {             @override             public void actionperformed(actionevent e) {                 system.out.println(e.getactioncommand());             }         });         b.seticon(uimanager.geticon("html.pendingimage"));         b.settext(string.valueof(b.hashcode()));         b.sethorizontaltextposition(jtogglebutton.center);         b.setverticaltextposition(jtogglebutton.bottom);         return b;     }      public static void main(string[] args) {         eventqueue.invokelater(new runnable() {              @override             public void run() {                 new test().display();             }         });     } } 

Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -