多个窗口的管理
用工厂模式,放到一个类中,管理多个窗口。
需要打开同一个窗口的时候,用工厂类new Frame()建立一个新Frame。new之前要判断,如果已经打开窗口,则关闭。
基本程序如下:
// 工厂模式和单例模式
public class ToolFac {
// view
public static JFrame jframeStart=null;
public static JFrame jframeStarted=null;
public static JFrame jframeend=null;
public static JFrame jframelevel=null;
public static JFrame jframeTmp=null;
//
public static JFrame newStartFrame()
{
//关掉其他窗口
if( jframeend !=null)
jframeend.dispose();
if( jframeStarted !=null)
jframeStarted.dispose();
//如果已经有窗口,关掉重开
if( jframeStart !=null)
jframeStart.dispose();
jframeStart=new JFrame();
return jframeStart;
}
面板JPanel经常包含数据,一般都需要new JPanel,做初始化,然后加到Frame里。
由于某功能的Frame只有一个,重复触发添加面板,会让这个Frame带有越来越多的面板。dispose可以释放掉原有窗口元素,不会造成重复添加。
多个Frame,由工厂类管理创建。
打开一个窗口,是否关闭前一个窗口,是否关闭其他窗口。这些情况,也有工厂类管理。
比如,游戏过程中,弹出一个小对话框,原来的大窗口是不关的。
选择关卡窗口,选完了,启动游戏。之前的窗口要关掉。
这些功能,由工厂类集中管理,单一职责,程序好调试,好维护。
具体案例,可以参见我上传的案例资源、代码、讲解视频: