2 qq 28412711 qq_28412711 于 2016.01.27 10:52 提问

java中dispose()与setVisible()

dispose()与setVisible()这两个究竟有什么区别???

2个回答

bdmh
bdmh   Ds   Rxr 2016.01.27 10:53
已采纳

dispose是销毁对象,setVisible只是设置对象是否可见,它依然存在

qq_28412711
qq_28412711 dispose大致是不是让内存多点啊
2 年多之前 回复
91program
91program   Ds   Rxr 2016.01.27 11:09

1.首先 一个窗体 如果dispose()以后,如果,用窗体对象.setVisible(true);能够显示的话,
说明你没设置窗体的默认关闭方式 。。 具体你可以看看 setDefaultCloseOperation();这个方法的API说明 。 如果,你没有设置窗体关闭方式 。 点击关闭窗体,或是程序调用dispose() 内部实现方式,都只是把窗体隐藏 == setVisible (false);

  1. 构造方法,只能是通过 new 窗体对象来调用 。。

    引申上面的问题 。 。 。 如果你改变窗体默认关闭方式 手动设置 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    在窗体里 调用 dispose(); 就会完全关闭窗体 ,并释放窗体资源 (不能通过setVisible重新显示)

  2. 这个很简单 。 。 你考虑单利模式 就行了 。。 把窗体类做成单利模式 。 。
    单利模式的意义就是 ,在程序的运行时,类实例只会存在一个。 也就是说,只要你没释放这个类资源 。 它只存在一个。 。

       写的太多了。 。 单利模式,你自己百度一下吧。。总的来说很简单
    
            私有构造方法。。
          定义静态内部实例。
       提供公有静态 创建并返回实例的方法
    

    以下资料,可以掠过。 以下为 setDefaultCloseOperation ()方法API解释。

    DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
    HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
    DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java中的dispose()方法
从JAVA 1.5 的帮助文档的原文 - dispose - public void dispose()     释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 通过随后对 pack 或 show 的调用重新构造本机资源,可以再次显示 Window 及其子
JAVA-dispose()方法
今天在编一道JAVA例题时,看到 dispose 这个方法,在程序中是用来关闭一个GUI页面的。这也让我想到了setVisible(false)方法。 在网上查了意思,dispose()即释放所有本机屏幕资源,这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 这与 setVisible(boolean)方法是不一样的,使用dispo
java swing中setVisible(true);方法的真正作用
setVisible(true);方法的意思是说数据模型已经构造好了,允许JVM可以根据数据模型执行paint方法开始画图并显示到屏幕上了,并不是显示图形,而是可以运行开始画图了。这个方法和java多线程的start方法有点异曲同工之妙,start方式是允许run方法运行了,start方法和setVisible方法很相似。但为了安全起见,还是要把setVisible方法放到最后面。...
java,swing中setvisible()使用注意事项
java中的setvisible(true)目的是使控件可以显示出来,如果该控件已经被显示出来,那么该方法是控件显示在窗口的最前方。 但其使用的位置需要注意。setVisible的对象一般是该对象的使用者调用的。如果setVisible在某个控件的内部,那么在setVisible函数后面添加的控件就显示不出来了。 原因就在于,setVisible(true)并不是告诉JVM让该控件可见,而是在
java swing setEnabled setVisible区别
最近,又重来玩玩Java的swing组件,虽说以后用得不多,但是确实有时候还是需要的。 在写jpanel的时候,发现这两个方法使用很频繁,但是有时候不明白其中的区别,上网也没有查到,就查了查官方的API,发现是这样说的public void setVisible(boolean aFlag) 使该组件可见或不可见。重写 Component.setVisiblepublic void setEna
java-dispose()方法
先来看看 JAVA 1.5 的帮助文档的原文 - dispose - public void dispose()     释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 通过随后对 pack 或 show 的调用重新构造本机资源,可以再次显示 Window 及
java SWT: 重写dispose()和DisposeListener的区别
当需要在Widget被销毁(dispose)的时候执行一些比如释放资源的动作时,有两个途径来执行这些动作: 1. 重写dispose()方法,在dispose中释放资源的动作。 2. 添加DisposeListener,监听SWT.Dispose事件,在Listener中执行释放资源的动作。 应该用哪种方式呢? 答案是方法2,因为虽然都能执行dispose动作,但SWT隐式销毁对象的时候并不
Java窗口关闭设置DISPOSE_ON_CLOSE和EXIT_ON_CLOSE 的区别
Java窗口关闭设置DISPOSE_ON_CLOSE和EXIT_ON_CLOSE 的区别 2012.11.06 / Java / 11,095 ViewsNo Reply setDefaultCloseOperation();是用来设定窗口被关闭时(比如点击了右上角的”x”)的行为。参数有: DISPOSE_ON_CLOSE:隐藏当前窗口,并释放窗体占
JNI全局引用与JFrame.dispose()方法
用 jProfiler 分析 Java swing 程序中的内存泄漏问题时, 我发现内存中 JFrame 实例的数量一直在增加。 各个 frame 被打开(opened),然后被关闭(closed)。 通过 jProfiler, 并查看GC Root时, 只找到一项: 'JNI Global reference'。 这是什么意思? 为什么他 hang 住了所有的 frame 实例?
关于dispose 方法的资源释放
当在程序上实现dispose 方法时,当前对象所占用的资源会被释放,当前对象便不能再被使用,但在内存中还并不会被及时的释放,要待到下次垃圾回收的时候,内存才能得到释放。