java - GUI Stackoverflowerror -


i trying create ui java swing studying purpose. running on autobahn until tried separate main.java file , panel components. trying here separately create classes different assignments keep main.java file short , easy modify independent assignment files. post anticipated result works when put in single file, , decoupled codes.

main.java

    package gui;  import java.awt.cardlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener;  import javax.swing.jframe; import javax.swing.jmenu; import javax.swing.jmenubar; import javax.swing.jmenuitem; import javax.swing.jpanel;  public class main {      //basic components         jframe frame = new jframe();          jmenubar menubar = new jmenubar();         jmenu menupanels = new jmenu("assignments");         jmenuitem assign_1 = new jmenuitem("assignment 1");         jmenuitem assign_2 = new jmenuitem("assignment 2");         jmenuitem assign_3 = new jmenuitem("assignment 3");           jpanel panel = new jpanel();         jpanel pnlass_1 = new jpanel();         jpanel pnlass_2 = new jpanel();         jpanel pnlass_3 = new jpanel();          cardlayout cardlayout = new cardlayout();          public main()         {             panel.setlayout(cardlayout);              assignment_1 pnlass_1_class = new assignment_1();             pnlass_1 = pnlass_1_class.createpanel(pnlass_1);                panel.add(pnlass_1, "pnlass_1");             panel.add(pnlass_2, "pnlass_2");              cardlayout.show(panel, "pnlass_1");              //menubars , menupanels             menubar.add(menupanels);             menupanels.add(assign_1);             menupanels.add(assign_2);              assign_1.addactionlistener(new actionlistener() {                 public void actionperformed(actionevent e)                 {                     cardlayout.show(panel, "pnlass_1");                 }             });             assign_2.addactionlistener(new actionlistener() {                 public void actionperformed(actionevent e)                 {                     cardlayout.show(panel, "pnlass_2");                 }             });              frame.setjmenubar(menubar);             frame.add(panel);             frame.setdefaultcloseoperation(jframe.dispose_on_close);             frame.setsize(800, 300);             frame.setvisible(true);         }          public static void main(string[] ar)         {             new main();         } }      assignment_1.java          package gui;  import java.awt.cardlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener;  import javax.swing.*;  public class assignment_1 extends main {      jlabel id, name, contact, address; jlabel intro;     jtextfield id, name, contact, address;      jbutton close;      assignment_1()     {      }      jpanel createpanel(jpanel panel)     {         panel.setsize(500, 300);         panel.setlayout(null);          intro = new jlabel("first assignment"); intro.setbounds(10, 10, 300, 20);         panel.add(intro);          //labels definition & addition         id = new jlabel("student id"); id.setbounds(10, 30, 100, 20);         name = new jlabel("name"); name.setbounds(110, 30, 100, 20);         contact = new jlabel("phone number"); contact.setbounds(210, 30, 100, 20);         address = new jlabel("github address"); address.setbounds(310, 30, 100, 20);         panel.add(id); panel.add(name); panel.add(contact); panel.add(address);          //textfields definition & addition         id = new jtextfield("2012203079"); id.setbounds(10, 50, 100, 20); id.seteditable(false);         name = new jtextfield("정상원"); name.setbounds(110, 50, 100, 20); name.seteditable(false);         contact = new jtextfield("010-8611-9898"); contact.setbounds(210, 50, 100, 20); contact.seteditable(false);         address = new jtextfield("https://github.com/swj0418"); address.setbounds(310, 50, 160, 20); address.seteditable(false);         panel.add(id); panel.add(name); panel.add(contact); panel.add(address);          //buttons definition& addition         close = new jbutton("close");            close.setbounds(400, 100, 70, 30);         close.addactionlistener(new actionlistener(){             public void actionperformed(actionevent e)             {                 system.exit(0);             }         });         panel.add(close);          return panel;     } } 

i think problem here has jframe. hava not posted assignment_2 java since symmetrical assignment_1 please me out matter.

do need assignment1 class inherited main, not @ using inheritance properties.

the problem on object constructor of main, trying initiate assignment1 object, in turn class super constructor, main's constructor, in turn again invokes constructor of assignment1 create object, loops go on , on recursively without stoppage. hence stackoverflow error.

just try removing extends main, if donot want inheritance not using parent class


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -