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