我写了一个类MyFrame继承了Frame类,在里面写了一个方法,这个方法使用dispose()方法关闭这个窗口,然后立刻使用new MyFrame()。
重复几次调用这个方法还没什么问题,但是次数多了的话,程序好像出现一些问题。在这里很难具体描述,请问各位大虾,应该如何分析呢?

解决方案 »

  1.   

    还是稍微仔细的描述一下吧。MyFrame类继承了Frame类,里面有一个菜单和几个按钮。类里有一个内置类实现了菜单监听器接口,此菜单监听器调用dispose方法,然后new MyFrame。
    点击菜单后,MyFrame窗口被关闭,同时又新出现了一个MyFrame窗口。重复几次这样的操作后,发现按钮对点击没有反应了。不知道是怎么回事。
    其实是想对窗口进行重新的初始化,不知道有没有什么好办法。
      

  2.   

    要么就直接new 一个 然后把原来的setVisible(false);
    要么就一个组件一个组件重新还原到初始状态别的方法我也不知道了 不过这两种办法好像都不好
      

  3.   

    我个人觉的,还是用setVisible(false);让他消失,
                      setVisible(true);让他显示
    这样就不会出现你那种问题了啊,而且所占有的资源也比较小,因为就就只有个Frame
      

  4.   

    ukeychen():程序运行过程中,很多组件的内容都改变了,仅仅通过setVisible()是不能恢复到初始状态的。
    joejoe1991():setVisible(false)后再new其实和dispose后再new结果差不多,但是感觉是不是会更占资源呢。也许从运行效率上来说把组件一个一个的重新初始化最好吧。可能也确实没有什么更好的办法。
    最后在这里忏悔一下,在提问中说到的重复几次后按钮对点击没有反应其实是我的程序自身设计上的问题。我在程序中设置了一个静态变量,当特定情况发生后,按钮通过判断这个静态变量的值后对点击不做出反应。因为是静态的,所以当特定情况发生后,就算是new一个新的对象,这个值都是使得按钮不做出反应的值,所以才出现我说的这种现象,真的不好意思。