簡體   English   中英

如何在打開新框架時關閉上一個框架

[英]How to close a previous Frame when a new Frame is opened

我正在編碼MVC。 在我的控制器中,我正在聽操作,如果用戶單擊“ SHOW-LIST”按鈕,則我將創建一個從JFrame擴展的視圖類的實例,並在其中創建一個新的JFrame。 我的問題是,如果我多次單擊“ SHOW-LIST”按鈕,則框架多次打開。 有人可以告訴我我該怎么做,以便新框架即將打開時,舊框架關閉。

調節器

public void actionPerformed(ActionEvent event) {
  String viewAction = event.getActionCommand();
  ...
    if (viewAction.equals("SHOW-LIST")) {
      showListUI = new ShowListDialogUI(displayedCustomerList);
    }
}

視圖

class ShowListDialogUI extends JFrame{
  public ShowListDialogUI (List<Customer> customerList) {
    ..
    // I am drawing it here
    ..
  }
}

有人可以告訴我我該怎么做,以便新框架即將打開時,舊框架關閉。

  • 使用CardLayout ,則沒有理由使用Top-Level Container ,放置所需數量的JPanels ,然后僅在JPanel視圖之間進行切換

  • 正如@trashgod通知的那樣,真的不是個好主意

  • 否則,必須清理(刪除所有內容)無用的容器, 因為永遠不會對頂級容器進行GC處理

好吧,這取決於用例,但是您可以關閉現有的舊的(而不是更新舊的)(而不是關閉舊的,然后創建新的)。

您的控制器可以管理幀並對其進行跟蹤。 以最簡單(但不推薦)的方式,您有一個布爾值“ isFrameOpen”。 如果打開框架,則將其設置為true;如果關閉框架,則將其設置為false(然后,框架必須與控制器進行通信,或者控制器必須至少了解框架的狀態)。 如果布爾值為true,則集中/重新創建它。 如果為false,則創建一個新的。

在更高級的解決方案中,您可以使用地圖跟蹤所有框架,並且必須謹慎處理並發訪問。

--tb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM