最近我在用Java语言想写一个记事本本来挺好用的,各个基本功能也都实现了,为了实现查找功能,我自己做了一个查找类继承了JDialog类,在单击查找菜单项的时候新建查找类并显示他。后来为了实现查找下一个的功能,我把查找类定义为了主窗口类的变量,在程序刚开始运行的时候初始化他,然后在单击菜单项的时候显示他,
这样就可以在查找下一个的函数里直接调用查找类的查找方法而不用显示他了。但是等程序运行后我发现了一个很严重的问题,就是如果程序运行后直接调用API函数显示对话框(如打开对话框,保存对话框,或JOptionPane显示的任何对话框),
在对话框退出的同时程序也跟着退出了,而如果先运行查找函数显示一下查找窗体再退出后,然后再打开这些对话框,就没有问题了。
或者把主窗口类中初始化查找类的那句话注释掉也没有这个问题。但是如果这样的话就不能利用查找类中的查找函数实现查找下一个的功能了,我看了好几遍代码,觉得程序应该没有问题啊,我又没有调用让程序退出的函数,
而且为什莫先显示一下查找窗体再关闭掉就没有问题了呢?希望各位大大们能够帮我解答这个问题,我真的非常感激,我上msdn的时间不长,分比较少,还希望各位大大们不要介意。

解决方案 »

  1.   

    把查询窗口的代码帖出来我看一下就知道了,有两种可能
    1.重新设置了这个方法:setDefaultCloseOperation();
    2.重载了关闭事件.
      

  2.   

    1、可以将查找窗体和查找类分开为两个不同的类,这样不会出现类似问题
    2、如果希望加载窗体后,以后继续使用,调用该窗体的setVisible方法,是否你没有调用该方法,而是调用了close方法