java - Close the JInternalFrame through JMenuItem -


hi creating internal frame, want close internalframe through menu item closed total frame. please me.

here code,

public class closewindow extends javax.swing.jframe {      jtextarea tx;     int i=0;     public closewindow() {         initcomponents();     }     @suppresswarnings("unchecked")     // <editor-fold defaultstate="collapsed" desc="generated code">//gen-begin:initcomponents     private void initcomponents() {          tpane = new javax.swing.jtabbedpane();         jmenubar1 = new javax.swing.jmenubar();         jmenu1 = new javax.swing.jmenu();         crete = new javax.swing.jmenuitem();         close = new javax.swing.jmenuitem();          setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);          jmenu1.settext("file");          crete.settext("create");         crete.addactionlistener(new java.awt.event.actionlistener() {             public void actionperformed(java.awt.event.actionevent evt) {                 creteactionperformed(evt);             }         });         jmenu1.add(crete);          close.settext("close");         close.addactionlistener(new java.awt.event.actionlistener() {             public void actionperformed(java.awt.event.actionevent evt) {                 closeactionperformed(evt);             }         });         jmenu1.add(close);          jmenubar1.add(jmenu1);          setjmenubar(jmenubar1);          javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane());         getcontentpane().setlayout(layout);         layout.sethorizontalgroup(             layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)             .addcomponent(tpane, javax.swing.grouplayout.alignment.trailing, javax.swing.grouplayout.default_size, 427, short.max_value)         );         layout.setverticalgroup(             layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)             .addcomponent(tpane, javax.swing.grouplayout.alignment.trailing, javax.swing.grouplayout.default_size, 279, short.max_value)         );          pack();     }// </editor-fold>//gen-end:initcomponents    private void creteactionperformed(java.awt.event.actionevent evt) {//gen-first:event_creteactionperformed         actionevent ae=evt;         final jinternalframe internalframe = new jinternalframe("");         i++;         internalframe.setname("document"+i);         internalframe.setclosable(true);         internalframe.setsize(700, 700);         tx = new jtextarea();         internalframe.add(tx);         tpane.add(internalframe);         internalframe.setsize(internalframe.getmaximumsize());         internalframe.pack();         internalframe.setvisible(true);         internalframe.addinternalframelistener(new internalframeadapter() {         @override         public void internalframeclosing(internalframeevent e) {              tpane.remove(internalframe);         }      });       }            private void closeactionperformed(java.awt.event.actionevent evt) {//gen-first:event_closeactionperformed       windowevent tabclosingevent = new windowevent(this,windowevent.window_closing);             toolkit.getdefaulttoolkit().getsystemeventqueue().postevent(tabclosingevent);       }      public static void main(string args[]) {         /* set nimbus , feel */         //<editor-fold defaultstate="collapsed" desc=" , feel setting code (optional) ">         /* if nimbus (introduced in java se 6) not available, stay default , feel.          * details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html           */         try {             (javax.swing.uimanager.lookandfeelinfo info : javax.swing.uimanager.getinstalledlookandfeels()) {                 if ("nimbus".equals(info.getname())) {                     javax.swing.uimanager.setlookandfeel(info.getclassname());                     break;                 }             }         } catch (classnotfoundexception ex) {             java.util.logging.logger.getlogger(closewindow.class.getname()).log(java.util.logging.level.severe, null, ex);         } catch (instantiationexception ex) {             java.util.logging.logger.getlogger(closewindow.class.getname()).log(java.util.logging.level.severe, null, ex);         } catch (illegalaccessexception ex) {             java.util.logging.logger.getlogger(closewindow.class.getname()).log(java.util.logging.level.severe, null, ex);         } catch (javax.swing.unsupportedlookandfeelexception ex) {             java.util.logging.logger.getlogger(closewindow.class.getname()).log(java.util.logging.level.severe, null, ex);         }         //</editor-fold>          /* create , display form */         java.awt.eventqueue.invokelater(new runnable() {             public void run() {                 new closewindow().setvisible(true);             }         });     }     // variables declaration - not modify//gen-begin:variables     private javax.swing.jmenuitem crete;     private javax.swing.jmenuitem close;     private javax.swing.jmenu jmenu1;     private javax.swing.jmenubar jmenubar1;     private javax.swing.jtabbedpane tpane;     // end of variables declaration//gen-end:variables } 

you creating new windowevent

windowevent tabclosingevent = new windowevent(this,.... 

and posting event queue. this here refers main frame. that's why closed.

however, should not mess around event queue manually. instead, should respective actions programmatically method perform desired actions.

there parts of code between first { , last } might benefit slight cleanup, in order solve actual issue, change closeactionperformed method this:

private void closeactionperformed(java.awt.event.actionevent evt)  {     component c = tpane.getselectedcomponent();     if (c instanceof jinternalframe)     {         jinternalframe f = (jinternalframe)c;         f.dispose();         tpane.remove(f);     } } 

(btw: don't need internalframelistener more)


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -