java - Loading Panel Contents Dynamically -


i have developed template gui wanna reuse , purpose added panel empty in template , wanna load things dynamically. assuming below code:

public class tempgui extends jframe{        public tempgui(jpanel dynamicpanel){          initcomponents();          this.dynamicpanel = dynamicpanel;       }  ... } 

this not seem working panel not changed. think should normal, there way components of dynamic panel , set them inside form ?

all this.dynamicpanel = dynamicpanel; make instance field, this.dynamicpanel point ever parameter dynamicpanel is. if parameter not on screen in anyway, no see anything. in fact, not affect ever this.dynamicpanel pointing to.

instead, consider adding parameter container...

public class tempgui extends jframe{        public tempgui(jpanel dynamicpanel){          initcomponents();          this.dynamicpanel.add(dynamicpanel);       }  ... } 

but you'd need change things around bit, have dynamicpanelcontent (which replace this.dynamicpanel), allow continue reference this.dynamicpanel point ever passed constructor...

public class tempgui extends jframe{        private jpanel dynamicpanel;        public tempgui(jpanel dynamicpanel){          initcomponents();          this.dynamicpanel = dynamicpanel;          this.dynamicpanelcontent.add(this.dynamicpanel);       }  ... } 

or such...

updated example

have tried it? , there no reason define private field here. won't work.

seems work fine me...

import java.awt.borderlayout; import java.awt.eventqueue; import java.awt.gridbagconstraints; import java.awt.gridbaglayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception; import javax.swing.border.emptyborder;  public class test {      public static void main(string[] args) {         new test();     }      public test() {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                     ex.printstacktrace();                 }                  jpanel myview = new jpanel(new gridbaglayout());                 gridbagconstraints gbc = new gridbagconstraints();                 gbc.gridx = 0;                 gbc.gridy = 0;                 jlabel label = new jlabel("hello!");                 myview.add(label, gbc);                 jbutton btn = new jbutton("say good-bye");                 btn.addactionlistener(new actionlistener() {                     @override                     public void actionperformed(actionevent e) {                         label.settext("good bye");                     }                 });                 gbc.gridy++;                 myview.add(btn, gbc);                  jframe frame = new jframe("testing");                 frame.setdefaultcloseoperation(jframe.exit_on_close);                 frame.add(new testpane(myview));                 frame.pack();                 frame.setlocationrelativeto(null);                 frame.setvisible(true);             }         });     }      public class testpane<v extends jpanel> extends jpanel {          private v view;          public testpane(v view) {             setlayout(new borderlayout());             this.view = view;             jpanel viewcontent = new jpanel(new borderlayout());             viewcontent.setborder(new emptyborder(10, 10, 10, 10));             viewcontent.add(view);              add(viewcontent);         }          public v getview() {             return view;         }      }  } 

Popular posts from this blog