栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java Swing 只关闭当前窗体的实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Swing 只关闭当前窗体的实现

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

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

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

setDefaultCloseOperation(Jframe.DISPOSE_ON_CLOSE);

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

具体实现如下:

Newframe.java
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 {
 
 
 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(); 
 }
}

效果图如下:

只关闭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;
 

 
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窗体,而父窗体还存在。

补充知识:java中Jframe和frame的窗体关闭区别

在Jframe中是使用setDefaultCloseOperation()方法的,例如:

win.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);

在frame中是使用一个事件监听器,如下:

win.addWindowListener(new WindowAdapter(){
 public void windowClosing(WindowEvent e){
  System.exit(0);
  }
 });

以上这篇Java Swing 只关闭当前窗体的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/130461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号