隐藏窗体关闭按钮_Java Swing 只关闭当前窗体

本文介绍如何在Java Swing中实现只关闭当前窗体的功能,避免使用`setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)`,而是采用`setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)`。同时,通过JButton事件触发`dispose()`方法,确保只关闭触发事件的窗体,而不影响父窗体。附带了关闭按钮的代码示例。
摘要由CSDN通过智能技术生成

原文链接:

Java Swing 只关闭当前窗体​blog.csdn.net
3d3bec3af64b46bdca85bac25129a47b.png

看到很多人都在询问怎么在java swing中只关闭当前的窗体,因此写下此文。

主界面主要是有两个JButton,一个是通过按钮事件调起另一个JFame,另一个是关闭当前窗体。

1、关闭当前窗体不能使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法,可以使用setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

2、通过JButton事件不能使用exit(),这样会使得整个程序的窗体全部关闭,可以使用dispose();这样就只关闭了当前窗体

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class NewFrame extends JFrame {
 
	/**
	 * called another JFrame
	 * close this JFrame
	 * write by Jimmy.li
	 * time:2016/4/6 22:55
	 */
	private static final long serialVersionUID = 1L;
 
	public NewFrame() {
		// 普通按钮控件
		JFrame jf = new JFrame("main");
		Toolkit tk = this.getToolkit();// 得到窗口工具条
		int width = 650;
		int height = 500;
		Dimension dm = tk.getScreenSize();
		jf.setSize(300, 200);// 设置程序的大小
		jf.setLocation((int) (dm.getWidth() - width) / 2,
				(int) (dm.getHeight() - height) / 2);// 显示在屏幕中央
		jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		jf.setVisible(true);
		JPanel contentPane = new JPanel();
		jf.setContentPane(contentPane);
 
		// 创建两个按钮,并且将按钮添加到内容面板中
 
		JButton another = new JButton("另起页面");
 
		JButton close = new JButton("关闭");
 
		contentPane.add(another);
 
		contentPane.add(close);
 
		another.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				new exit();
			}
		});
 
		close.addActionListener(new ActionListener() {
 
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
		});
	}
 
	public static void main(String[] args)
 
	{
		new NewFrame();
 
	}
}

效果图如下:

aef747ecc18b3f6d278bee2ccf0964fd.png

c4dbad567a849c9aa0eb7776fe7abf5e.png

只关闭exit的窗体,而不涉及父窗体。

exit.java代码如下

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
/**
 * called another JFrame close this JFrame write by Jimmy.li time:2016/4/6 22:55
 */
 
public class exit {
 
	private static final int WIDTH = 300;
 
	private static final int HEIGHT = 200;
 
	public exit() {
		// 普通按钮控件
		final JFrame jf = new JFrame("exit");
		jf.setSize(WIDTH, HEIGHT);
		jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		jf.setVisible(true);
		JPanel contentPane = new JPanel();
		jf.setContentPane(contentPane);
 
		// 创建两个按钮并添加到内容面板
 
		JButton close1 = new JButton("关闭");
		contentPane.add(close1);
 
		close1.addActionListener(new ActionListener() {
 
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				// System.exit(0);
				jf.dispose();
			}
		});
	}
 
	public static void main(String[] args)
 
	{
		new exit();
	}
 
}

这样通过点击关闭按钮,只关闭了当前的exit窗体,而父窗体还存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值