在JAVA程序设计中本来就不应该有全局变量。因为在程序中所有的角色都应该是对象。
你提的方法可以,但更一般的做法是:将输入的数据保存到该变量所处的对象中(因为基本元素是对象,所以每一个变量都有它所属的对象),而该对象的保存可以采用几种方式:1,存在SESSION中。2,存在数据库中。3,序列化到硬盘上。如果是EJB则不需程序员自己编程实现,EJB容器会为你自动保持该对象。

解决方案 »

  1.   

    to wafer_w:我做的是application不是applet,所以好像没有session的吧。我只需要临时使用对话框中的数据,我也考虑过用文件保存,但是这样是否有点小题大做?我觉得应该可以直接传递引用来实现,我正在试。很希望进一步得到你的想法。
      

  2.   

    可以在创建对话框的时候传进要用对话框数据的类实例,这样就当点击对话框的"确定"按扭后在dispose之前调用用对话框数据类的方法保存到类私有成员变量中去。直接传递引用也可以实现同样功能。
      

  3.   

    to GJA106:你说得对,我是准备在窗口中绘制复杂表格(我自定义的),由用户指定图形参数。这样在创建对话框的时候,我传给它的就是父窗口的引用,我现在只要在‘确认响应函数‘中使用this.getParent()得到父窗口引用,然后进行我的绘制。但是由于我需要以‘保存对象的形式’而不是以‘保存像素的形式’保存我绘制的结果,这就意味着我必须将表格向量(vector)作为主窗口(或者绘图区)的成员变量,是不是一定要这样呢?
      

  4.   

    顺便问一下,我的‘userCanvas’extends 了 JPanel,但是现在只要在它上面显示对话框,关闭后,会留下残影,不能象JPanel那样自动repaint(),我应该override哪个method?
      

  5.   

    如wafer_w(流浪的风)所说的可以将对象作为参数传递,但要注意参数的大小问题,参数太大传送会失败。java中事件响应也是以循环方式进行,应该override哪个method偶也不大清楚。不可以试一试,先hide对话框然后涮新JPanel所在的窗口再dispone对话框。
      

  6.   

    to GJA106:,现在我考虑下来,觉得通过传递模态对话框的引用好像不太现实,或者说用消息传递更现实一些,但是我现在不知道怎么实现。能不能麻烦你讲讲你为什么认为将对象作为参数传递是可行的呢?模态对话框是独占资源的,好像很难要到它的句柄啊,不知道你是怎么考虑的呢?真麻烦你了
      

  7.   

    你可以将数据封装成一个自定义的mObject,在模态窗口的构造器中将这个mObject传进去,这样就可以在模态窗口中修改数据了.
    在 java 核心技术 上有讲这种方法.不记得是I还是II册了.
      

  8.   

    to turbochen:你说得很有价值,不论I,II我这里都有,我去看看。
      

  9.   

    to turbochen:看了,那样做得话,就是我说的使用了全局和静态变量
      

  10.   

    那可能是我记错了,不过将数据封装成一个自定义的mObject是没错的,物件里提数据的修改方法,再通过构迁器传入,你就可任意修改物件里的数据了.
      

  11.   

    我用传递this引用初步取得了效果,不过不知道是不是有更好的方法了,先这么办吧,谢谢3位。