пресъздайте обект JinternalFrame след извикване на dispose().

Ситуация: има Supplier_JinternalFrame в JDesktopPane. Supplier_button е наличен за извикване SetVisible(true) в JDesktopPane, за да се покаже рамката Supplier. но когато затворя рамката на доставчика чрез Dispose(); неговото скриване и никога повече след щракване върху бутона. има опция за използване на setshow(); и setHide() вместо setDispose(). но искам да пресъздам Jinternalframe вместо предишната форма. тук е моят код Supplier_button за извикване на обекта Supplier_JInternalFrame.

  private void Suppliers_ButtonActionPerformed(java.awt.event.ActionEvent evt)   {                                                 
    Suppliers_JinternalFrame.setVisible(true);//call the object of frame to show the frame
} 

и в Suppliers_JinternalFrame Код на бутона за затваряне

 private void Close_SupMangActionPerformed(java.awt.event.ActionEvent evt) {                                              
   Suppliers.dispose();//To close the frame 
} 

след като кликнете отново на доставчик_бутон. никога повече не показва рамка. Някаква идея, какво трябва да направя, за да извикам InternalFrame. Има ли WindowEvents, предлагам да създадете?


person Zubair    schedule 07.04.2014    source източник
comment
Вероятно JInternalFrame е премахнат от JDesktopPane, може да се наложи да го добавите отново и след това да го направите видим   -  person MadProgrammer    schedule 07.04.2014


Отговори (1)


Когато dispose се извика, JInternalFrame се прави невидим, той също се премахва от JDesktopPane (помислете desktopPane.remove(...))

Това означава, че правенето на рамката видима отново няма (видим) ефект. Трябва да добавите рамката обратно към JDesktopPane

person MadProgrammer    schedule 07.04.2014
comment
къде трябва да добавя рамка, в Supplier_Button, за да извикам отново рамката? - person Zubair; 07.04.2014
comment
@user3079252 Това е моето предположение - person MadProgrammer; 07.04.2014
comment
if (Customer.isClosed()){ Customer.setBounds(310, 110, 850, 460); jDesktopPane1.add(Клиент, javax.swing.JLayeredPane.DEFAULT_LAYER); - person Zubair; 07.04.2014
comment
горният код работи, но показва предишното състояние на рамката, а не като новото. e-g предишните данни на textField във Frame остават там. - person Zubair; 07.04.2014
comment
Добре. Така че, вместо да добавяте отново изхвърлен преди това вътрешен кадър, който изглежда е това, което искате, създайте нов екземпляр Suppliers_ButtonActionPerformed се извиква и добавете това вместо това... - person MadProgrammer; 07.04.2014