воссоздать объект JinternalFrame после вызова dispose()

Ситуация: в JDesktopPane есть Supplier_JinternalFrame. Кнопка 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
} 

и в коде кнопки Close в Suppliers_JinternalFrame

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

после повторного нажатия кнопки supplier_Button. он никогда больше не показывает кадр. Любая идея, что мне делать, чтобы вспомнить 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 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
приведенный выше код работает, но отображает предыдущее состояние кадра, а не новое. например, предыдущие данные textField во фрейме остаются там. - person Zubair; 07.04.2014
comment
Хорошо. Таким образом, вместо повторного добавления ранее отброшенного внутреннего фрейма, который, казалось, был тем, что вы хотели, создайте новый экземпляр Suppliers_ButtonActionPerformed и добавьте его вместо этого... - person MadProgrammer; 07.04.2014