java中的dispose函数_[转载]java中的dispose()方法
这是我第100篇IT技术文章,也正好让我实现了一个完整的从客户端输入参数,使用遗传算法计算生产排程的实例,前端由客户输入种群大小,遗传代数,交叉概率,变异概率,零件数,机器数,时间矩阵,机器矩阵,经运算得出最小的排程时间和甘特图。爽啊。
从读研起开始学习java至今也有2年多了,中间搞了很多其它的事情,真正花在java上面的时间又有多少,总觉得Java东西太多了,学不完,就连环境配置都占用了我很多时间,一步一步走过来,感觉也开始有点明白了,从开放性来说,java的东西确实更有包容性,不同于微软的一家之言,但是包容性灵活性也意味着复杂性,从环境配置就可以略见一二。但也加深了我对某些方面的了解。
不多说,做个记号,留个纪念,在我200、300、甚至1000篇IT技术文章(当然有很多上转载的,但我都看了)的时候,再回头来看,那个时候应该是另一种境界了吧。
先来看看 JAVA 1.5 的帮助文档的原文 - dispose - public void dispose()
释放由此
Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component
的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 通过随后对 pack 或 show
的调用重新构造本机资源,可以再次显示 Window 及其子组件。重新创建的 Window 及其子组件的状态在移除 Window
的点上与这些对象的状态将是一样的(不考虑这些操作之间的其他更改)。
注:当 Java 虚拟机 (VM) 中最后的可显示窗口被移除后,虚拟机可能会终止。
实际上就是说明了两层意思:
1.使用dispose()方法关闭窗体会释放该窗体的占用的部分资源,不过呢不是全部的,如上面说的,只是屏幕资源。2.使用dispose()方法关闭的窗体可以使用pack
或 show 方法恢复,并且可以恢复到dispose前的状态(呵呵~感觉好神奇的,一开始都不相信)
关于上面的还有几点要说明的就是:1.如果dispose掉最后的窗体(程序启动就显示的那个),程序将终止。2.在JDK1.5中,show方法已经过时,被setVisible(boolean)方法代替,不过,使用dispose()和setVisible()方法,在表象上没有任何区别,它们的实质区别在于setVisible方法仅仅隐藏窗体,而dispose方法是关闭窗体,并释放一部分资源。
呵呵~顺便写个程序,简单验证一下:
By Noel @ 程序员之家 //
验证dispose()方法,窗体是否能被正确还原
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/// MyFrame 主窗体
/
class MyFrame extends JFrame implements ActionListener {
JButton btnEvt=new JButton("生成窗体");
JButton btnEvt1=new JButton("恢复子窗体");
JTextArea txtArea =new JTextArea(5,15);
static int flag=0;
//标记子窗体是否被生成
subFrame subfrm;
public MyFrame() {
super("主窗体");
this.setBounds(20,20,300,200);
Container cPane=getContentPane();
cPane.setLayout(new FlowLayout());
//在按钮上添加监听器
cPane.add(btnEvt);
btnEvt.addActionListener(this);
cPane.add(btnEvt1);
btnEvt1.addActionListener(this);
this.addWindowListener(new WindowAdapter( ) {
public void windowClosing(WindowEvent e) { System.exit(0); } }
);
this.setVisible(true);
}
//实现按钮中方法
public void actionPerformed(ActionEvent ae) {
if( flag==0 &&
(ae.getSource()).equals(btnEvt)) {
flag=1;
btnEvt.setEnabled(false);
subfrm=new subFrame(); //生成子窗体 }
}
else
{
subfrm.setVisible(true); //恢复子窗体 }
}
}
//测试用主函数
public static void main(String str[]) { MyFrame frm=new MyFrame();
} }
/ 子窗体 //
class subFrame extends JFrame {
JLabel lblsub=new JLabel("点击右上角关闭按钮关闭。");
//设置JRadioButton目的为了标记窗体状态 //检查是否能被正确还原
JRadioButton rbtn1=new JRadioButton("1");
JRadioButton rbtn2=new JRadioButton("2");
JRadioButton rbtn3=new JRadioButton("3");
public subFrame() {
super("子窗体");
this.setBounds(30,40,200,300);
Container cPane=getContentPane();
cPane.setLayout(new FlowLayout());
ButtonGroup bg =new ButtonGroup();
bg.add(rbtn1);
bg.add(rbtn2);
bg.add(rbtn3);
cPane.add(rbtn1);
cPane.add(rbtn2);
cPane.add(rbtn3);
cPane.add(lblsub);
this.addWindowListener(new WindowAdapter(){ public void
windowClosing(WindowEvent e) {
//可切换两种不同的方法,不过表象上两种方法运行时没有区别
subFrame.this.dispose();
//subFrame.this.setVisible(false);
} } );
//this.setVisible(true);
}
}
======================================================================================
我的理解是dispose是
java.awt.Windows类的方法,它的作用是销毁程序中指定的图形界面资源,对数据资源不产生影响,所以当我们在SWing或是AWT中的图形界面组件时如果调用它,组建内的数据对象不会消失,只有在这些数据资源其他地方没有再使用后才会由垃圾回收机制处理掉。
java中的dispose函数_[转载]java中的dispose()方法相关推荐
- java string()函数_转载java String.split()函数的用法详解
转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...
- java里的初始化块_[转载] Java 语言中的实例初始化块 ( IIB) 详解
参考链接: Java中的实例初始化块(IIB) 在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详 ...
- java状态模式例子答案_[转载]java设计模式_状态模式(带例子)
状态模式(STATE) Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编 ...
- java 计算股票高低点_[转载]股市中常用的一些计算高低点的计算方法
朋友们观看股评文章时,常常发现那些专家或准专家发出股价在上涨到某某价位会遇到阻力或股价在下跌途中在某一价位会遇到有效支撑的判断,而股价也真的会在这一价位附近掉头向下(上涨途中)或横盘盘整.或下跌途中的 ...
- Java显示文件层级目录函数_[转载]文件和目录复制函数
评论内容较长,点击标题查看 --lees vloerlamp 评论内容较长,点击标题查看 --http://www.pinsaguelbc.fr I was going through a big l ...
- java构造反射和函数_反射类的构造函数和方法
开始学习Javaweb,看到了反射,现在还没有用上,先把基础的写上来吧 package com.april.write; public class Grade { private int num; p ...
- python中读取文件编码_[转载]python中使用文件的读取编码问题
原文链接:https://www.cnblogs.com/qianboping/p/6524420.html 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都 ...
- matlab中单独存图_[转载]matlab中保存图片的方法
matlab中保存图片的方法 一.一种是出来图形窗口后手动保存(这儿又可以分两种): 1 直接从菜单保存,有fig,eps,jpeg,gif,png,bmp等格式. 2 edit------〉copy ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
最新文章
- 服务器计费系统安卓,GitHub - NWAFU/dms_client: 服务器计费系统(客户机端):用于统计租户的服务器使用情况...
- 【jquery仿datalist的一个问题,求助】——设置每行显示几列,块状DIV的解决办法...
- 复杂度O(n)倒转链表
- 设计Whats App
- Bailian3659 判断是否为C语言的合法标识符【文本处理】
- 小红书笔记_小红书推广如何打造爆文笔记?
- 类的继承与派生的基础学习
- 计算机二级真题期刊论文模板,标准期刊论文格式模板_优秀论文范文3000字
- 头文件<ctype.h>
- 不会拼音学计算机怎么写,不会拼音不会拼音怎怎么打字?
- php gethostbyname ipv6,支持IPV6方法
- vue根据文件名后缀区分
- Firewalld ip伪装和端口转发
- Kinect for Windows SDK 1.6的改进及新特性
- php写html就错误500,php – 简单的html dom解析器返回错误500
- 电脑突然断电蓝屏导致Git错误的一种解决办法
- shell命令执行完的退出状态详解+if语句的定义方法
- STM32程序中前缀MSP的意思
- 支持N个request 的 round robin arbiter
- 《嵌入式 – GD32开发实战指南》第18章 CRC
热门文章
- 如何恢复删除的文件夹
- sklearn.impute.SimpleImputer
- css解决uniapp使用image标签图片无法撑满全屏问题
- java数值计算实验心得体会,计算方法实验心得体会
- 听雷哥浅谈Redis
- Python数学建模系列(八):图论
- 许可错误无法连接至许可服务器系统,错误:FLEXlm 错误:-15 无法连接到许可服务器...
- Eclipse IDE 2020-06 R(4.16.0)发布,正式支持Java 14
- 海洋世界水族馆的Eclipse审查的亚克力鱼缸
- Struts2的配置 struts.xml Action详解