[英]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.