java的GUI图形用户界面程序如何关闭程序窗口

如何正确关闭GUI图形用户界面程序?我们先来看一个最简单的例程。
JFrame是一个框架窗体(顶层的容器组件),例程CenterLocationFrame.java先自定义了一个继承自JFrame的框架窗口,然后设置窗口的首选大小,再设置框架窗口显示于屏幕中间。JFrame默认大小其长和宽都是0,如果不设置窗口的首选大小或窗口的size,将只显示窗口标题栏。此框架窗口自动包含窗口最大化、最小化和窗口关闭的功能。框架窗口默认是不可见的,调用setVisible(true)方法才能显示窗口。
下面这行代码定义了窗体的默认关闭操作,其中EXIT_ON_CLOSE是JFrame中定义的常量,表示退出并关闭窗体。
setDefaultCloseOperation(EXIT_ON_CLOSE);
假如没有这行代码,程序看上去也很正常,而且点击窗口右上的窗口关闭按钮,程序窗口也会关闭。但是实质上程序却没有正常退出,只是隐藏了窗口,还在后台执行,相关资源也未释放。

import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.*;
public class CenterLocationFrame extends JFrame {
	public CenterLocationFrame(String title,int w,int h) {
		setTitle(title);
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension screenSize = kit.getScreenSize();//屏幕范围
		int screenWidth = screenSize.width; //屏幕宽度
		int screenHeight = screenSize.height; //屏幕高度
		//设置框架窗口的最优大小
		setPreferredSize(new Dimension(w, h));
		setLocation((screenWidth-w)/2, (screenHeight-h)/2); //居中
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		pack();
		setVisible(true);
	}
	public static void main(String[] args) {
		int w=340, h=100;
		new CenterLocationFrame("窗口居中例程",w,h);
	}
}

这个程序当用户点击窗体右上角的关闭按钮时,程序直接退出并关闭窗体。
在这里插入图片描述

如果我们要在程序退出前做一些特殊处理,则程序要这样修改:

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class CenterLocationFrame extends JFrame {
	public CenterLocationFrame(String title,int w,int h) {
		setTitle(title);
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension screenSize = kit.getScreenSize();//屏幕范围
		int screenWidth = screenSize.width; //屏幕宽度
		int screenHeight = screenSize.height; //屏幕高度
		//设置框架窗口的最优大小
		setPreferredSize(new Dimension(w, h));
		setLocation((screenWidth-w)/2, (screenHeight-h)/2); //居中
		//setDefaultCloseOperation(EXIT_ON_CLOSE);
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				// 窗口关闭前,在这里实现要处理的操作
				super.windowClosing(e);
			}
		}); 
		pack();
		setVisible(true);
	}
	public static void main(String[] args) {
		int w=340, h=100;
		new CenterLocationFrame("窗口居中例程",w,h);
	}
}

程序中给窗体注册了一个匿名的WindowAdapter()来实现具体功能。

更多的关闭程序窗口方法,请参考网友的博客:
java关闭窗口的6种方法

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值