本帖最后由 溦丨涼 于 2015-7-1 17:01 编辑
- import java.awt.*;
- import java.awt.event.*;
- class AwtDemo
- {
- public static void main(String[] args)
- {
- Frame f = new Frame("my awt");
- //设置框架大小
- f.setSize(500,400);
- //设置框架在屏幕中出现的位置,左定点到屏幕左定点的距离
- f.setLocation(300,200);
- //设置布局管理器,frame默认为BoarderLayout
- f.setLayout(new FlowLayout());
- //想框架中加入按钮
- Button b = new Button("我是一个按钮");
- Button b3 = new Button("我是另一个按钮");
- f.add(b);
- f.add(b3);
- f.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- Frame f1 = new Frame("确定结束程序吗?");
- f1.setSize(250,100);
- f1.setLocation(450,350);
- f1.setLayout(new FlowLayout());
- Button b1 = new Button("确定");
- Button b2 = new Button("返回");
- f1.add(b1);
- f1.add(b2);
- f1.setVisible(true);
- b1.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- System.exit(0);
- }
- });
- b2.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- f1.dispose();
- }
- });
- f1.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- f1.setVisible(false);
- }
- });
- b3.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- f1.setVisible(true);
- //f1.pack();
- }
- });
- }
- });
- f.setVisible(true);
- }
- }
复制代码 运行这段代码后,我按下f界面的x按钮会出现f1提示界面。我设置的是按下“返回”按钮调用dispose()方法,按下f1界面的x按钮调用setVisible(false)方法。而按下f界面中的“我是另一个按钮”是显示f1界面,不论我用dispose方法还是setVisible方法,都可以重新显示f1界面。
那dispose方法的关闭我setVisible的隐藏具体区别究竟是什么? 是不是dispose可以把占用的内存释放,而setVisible不能?
|