java - Opening an applet from a frame button click -
i have button within frame. on click of button, applet should load in frame. these exceptions coming up. defg applet class. there other way it. thanks.
private void jbutton1actionperformed(java.awt.event.actionevent evt) { // todo add together handling code here: japplet applet = new defg(); // send applet init() message. applet.init(); // build jframe. final jframe frame = new jframe("frametitle"); // transfer applet's context pane jframe. frame.setcontentpane(applet.getcontentpane()); // transfer applet's menu bar jframe. // line can omitted if applet // not create menu bar. frame.setjmenubar(applet.getjmenubar()); // create application shut downwards when user clicks // on close button. frame.setdefaultcloseoperation(jframe.exit_on_close); // set size of frame. // pack frame tightly possible // replace setsize() message following. // frame.pack(); frame.setsize(800, 800); // set location of frame. frame.setlocation(30, 30); // show frame. frame.setvisible(true); }
the exception...
exception in thread "awt-eventqueue-0" java.lang.nullpointerexception @ defg.init(defg.java:198) @ appmain1.jbutton1actionperformed(appmain1.java:80) @ appmain1.access$0(appmain1.java:75) @ appmain1$1.actionperformed(appmain1.java:40) @ javax.swing.abstractbutton.fireactionperformed(abstractbutton.java:2018) @ javax.swing.abstractbutton$handler.actionperformed(abstractbutton.java:2341) @ javax.swing.defaultbuttonmodel.fireactionperformed(defaultbuttonmodel.java:402) @ javax.swing.defaultbuttonmodel.setpressed(defaultbuttonmodel.java:259) @ javax.swing.plaf.basic.basicbuttonlistener.mousereleased(basicbuttonlistener.java:252) @ java.awt.component.processmouseevent(component.java:6505) @ javax.swing.jcomponent.processmouseevent(jcomponent.java:3320) @ java.awt.component.processevent(component.java:6270) @ java.awt.container.processevent(container.java:2229) @ java.awt.component.dispatcheventimpl(component.java:4861) @ java.awt.container.dispatcheventimpl(container.java:2287) @ java.awt.component.dispatchevent(component.java:4687) @ java.awt.lightweightdispatcher.retargetmouseevent(container.java:4832) @ java.awt.lightweightdispatcher.processmouseevent(container.java:4492) @ java.awt.lightweightdispatcher.dispatchevent(container.java:4422) @ java.awt.container.dispatcheventimpl(container.java:2273) @ java.awt.window.dispatcheventimpl(window.java:2719) @ java.awt.component.dispatchevent(component.java:4687) @ java.awt.eventqueue.dispatcheventimpl(eventqueue.java:735) @ java.awt.eventqueue.access$200(eventqueue.java:103) @ java.awt.eventqueue$3.run(eventqueue.java:694) @ java.awt.eventqueue$3.run(eventqueue.java:692) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:76) @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:87) @ java.awt.eventqueue$4.run(eventqueue.java:708) @ java.awt.eventqueue$4.run(eventqueue.java:706) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:76) @ java.awt.eventqueue.dispatchevent(eventqueue.java:705) @ java.awt.eventdispatchthread.pumponeeventforfilters(eventdispatchthread.java:242) @ java.awt.eventdispatchthread.pumpeventsforfilter(eventdispatchthread.java:161) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(eventdispatchthread.java:150) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:146) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:138) @ java.awt.eventdispatchthread.run(eventdispatchthread.java:91)
so problem within applet's init method...
try { java.awt.eventqueue.invokeandwait(new runnable() { public void run() { initcomponents(); } }); } grab (exception ex) { ex.printstacktrace(); }
you can't phone call invokeandwait
within context of event dispatching thread generate deadlock
instead, want phone call init
outside event dispatching thread , then, when loaded, load rest of ui.
in case, swingworker
might useful, example...
public class loadappletworker extends swingworker<japplet, japplet> { @override protected japplet doinbackground() throws exception { // todo add together handling code here: japplet applet = new defg(); // send applet init() message. applet.init(); homecoming applet; } @override protected void done() { seek { japplet applet = get(); // build jframe. final jframe frame = new jframe("frametitle"); // transfer applet's context pane jframe. frame.setcontentpane(applet.getcontentpane()); // transfer applet's menu bar jframe. // line can omitted if applet // not create menu bar. frame.setjmenubar(applet.getjmenubar()); // create application shut downwards when user clicks // on close button. frame.setdefaultcloseoperation(jframe.exit_on_close); // set size of frame. // pack frame tightly possible // replace setsize() message following. // frame.pack(); frame.setsize(800, 800); // set location of frame. frame.setlocation(30, 30); // show frame. frame.setvisible(true); } grab (interruptedexception | executionexception ex) { logger.getlogger(initapp.class.getname()).log(level.severe, null, ex); } } }
then phone call using like...
private void jbutton1actionperformed(java.awt.event.actionevent evt) { new loadappletworker().execute(); }
java applet
No comments:
Post a Comment