我最近在做一个基于Swing的聊天工具,现在在做窗体的隐藏时遇到一个郁闷的问题,需要请教各位高手啦~~
在窗体隐藏是我用了setVisible(false),显示时用的setVisible(true),但是显示时发现,窗口里的用户列表和聊天信息全部被清空了,也就是说是给我重新绘制了一个新的窗体,原来的窗体永远消失了(后台的连接还在),请问swing的setVisible方法会产生这样的情况吗?还是我的代码有问题?
分布多,请见谅~~

解决方案 »

  1.   

    是你代码的问题,正常的显示和隐藏是不会影响空间的内容的,你看看你的代码是不是初始化多了一个对象,还要看看setVisible(false)和setVisible(true)前后是不是同一个对象
      

  2.   

    只要窗口没有被销毁,子控件都不会消失的。
    setVisible(false)前应该保存窗口的引用
      

  3.   

    还有,是不是覆盖了paint(),paintComponent()方法
    其中没有写super.paint(g)
    使子控件没有被绘制?
      

  4.   

    感觉LZ是重新new一个窗口,然后再setVisible,你确信前后的窗口是同一个?
    还是贴出代码吧
      

  5.   

    winc218
    我个人的看法是:setVisible方法不会导致窗口重绘。出现这种情况多半是因为你在某个地方不小心触发了窗体重绘、或是很不幸地重新生成了用于存放聊天信息的控件。
    建议如下:
    1、仔细检查代码,尤其注意检查带有 new 的地方。因为在这些地方多半会重新生成类实例。
    2、如果上面的方法无法解决,你可以通过将聊天窗口最小化,同时不在任务栏中显示的替代办法。
    3、因为没有看到代码,所以暂时没有更好的方法。一切以实践为准。
    你可以将程序发至