在一个java项目中,先运行程序,开启了一个JFrame窗口,保存到HashMap hm中;再重新运行该程序,开启另一个窗口,再保存到之前那个HashMap hm中如何实现。求源码。谢谢。

解决方案 »

  1.   

    我自己写的方法如下,但是并没有符合我的初衷。我初衷为,第一次运行TJFrame,输出size=1,再运行TJrame,输出size=2。我好像知道为什么错了,但是要如何修改才能完成我的目的。谢谢。public class TFrame extends JFrame{
     
     public TFrame() {
      this.setTitle("1");
    //  this.setTitle("2");
    //  this.setTitle("3");
    //  this.setTitle("4");
      this.setSize(100, 200);
      this.setVisible(true);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      ManageJFrame.addJFrame(this.getTitle(), this);
     }
     
     public static void main(String[] args) {
      new TFrame();
     }
    }---------------------------public class ManageJFrame {
     private static Map<String, JFrame> hm = new HashMap<String, JFrame>();
     
     public static void addJFrame(String name, JFrame frame) {
      hm.put(name, frame);
      System.out.println("name=" + name);
      System.out.println("size=" + hm.size());
     }
    }
      

  2.   


    我自己写的方法如下,但是并没有符合我的初衷。我初衷为,第一次运行TJFrame,输出size=1,再运行TJrame,输出size=2。我好像知道为什么错了,但是要如何修改才能完成我的目的。谢谢。public class TFrame extends JFrame{
     
     public TFrame() {
      this.setTitle("1");
    //  this.setTitle("2");
    //  this.setTitle("3");
    //  this.setTitle("4");
      this.setSize(100, 200);
      this.setVisible(true);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      ManageJFrame.addJFrame(this.getTitle(), this);
     }
     
     public static void main(String[] args) {
      new TFrame();
     }
    }---------------------------public class ManageJFrame {
     private static Map<String, JFrame> hm = new HashMap<String, JFrame>();
     
     public static void addJFrame(String name, JFrame frame) {
      hm.put(name, frame);
      System.out.println("name=" + name);
      System.out.println("size=" + hm.size());
     }
    }
      

  3.   

    每次运行java程序都会打开一个java虚拟机,虚拟机不会共享内存空间。所以,你第一个打开窗体件是1,第二个肯定也是1.
      

  4.   

    楼主你的意识是所有打开的窗体引用都压入集合是吧??
    修改main方法即可main()
       while(true)
       {
           询问是否新打开窗体
            ManageJFrame.addFrame(名字,new JFrame());//不推荐这样new对象,这样虚拟机运行期间会销毁不了堆对象.         
       }