frmA上的JTextField输入了数字,关闭frmA后再打开frmA,Text上的数字依然保留,而没有被清空,这是为什么?应该如何彻底关闭frmA?我用的是this.setDefaultCloseOperation(EXIT_ON_CLOSE或DISPOSE_ON_CLOSE)都不行!
对了,我new frmA()用的是单态类,即静态的,和这有关系吗?代码如下:private static FrmA frm = null;private FrmA() {……省略100行} public static synchronized JFrame getFrm() {
if (frm == null)
frm = new FrmA();
return frm;
}

解决方案 »

  1.   

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    这个不能用吧,你用这个选项,关闭窗口的话程序就彻底退出了。DISPOSE_ON_CLOSE选项只是隐藏窗体并释放资源。监听frmA的窗口关闭事件或者在获取frmA时将JTextField.setText("");
      

  2.   

    weacer()的方法不行,如果这个frm有很多txt,还有很多其他的组件,一个个还原不是很麻烦。
      

  3.   

    这样就不用一个个写啦,呵呵
    Component[] comp=this.getComponents();
    for(Component cp:comp){
     if(cp instanceof JTextField){//其它要复原的字段,照搬吧
       ((JTextField)cp).setText("");
     }
    }
      

  4.   

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);============================都退出了  重新启动 还会有以前的text????
    出鬼了 除非
      

  5.   

    哪能轻易用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),我总不能为了这一个功能,把整个架构都修改了其实不用静态单根类,就不会出现这种问题,把一个窗体关闭后再重新打开,就全部初始化了。但用了静态单根类,就会出现我说的问题,text或tree等组件不会还原成初始状态
      

  6.   

    dispose方法没用!这种最初级的方法我怎会不知道,就是不行才发帖求助啊