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 {

 /**
 * 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();
 }
}

效果图如下:

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

补充知识: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 只关闭当前窗体的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java swing 创建一个简单的QQ界面教程

    记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.awt.event.*; //首先,编写按钮癿监听器实现类 public class LoginAction implements ActionListener { private int count=0; //当前为null,创建后指向界面输入框 private JTextField ulName;

  • 基于Java swing组件实现简易计算器

    本文记录了笔者的第一个Java程序,基于Java抽象窗口工具(abstract window toolkit , AWT)和Swing(Swing属于Java Foundation Classes的一部分)实现的建议计算器,由于笔者经验有限,初学Java,代码略带bug,无法实现7+5×8之类式子的计算,只能实现算术运算符按从高到低的式子运算,部分代码略显冗杂,希望大家在评论区积极讨论完善代码! 计算器示意图 一.代码相关知识简介 JFrame(框架) 使用JFrame frame = new

  • Java swing读取txt文件实现学生考试系统

    本文实例为大家分享了Java swing读取txt文件实现学生考试系统的具体代码,供大家参考,具体内容如下 主要实现了一个简单的倒计时答题系统 源码Testquestion 类 public class Testquestion { private String questionText ="";//定义题目 private String standardkey = "";// 定义正确答案 private String selectKey =""

  • java实现猜数字小游戏(Swing版)

    2008年的时候,在学习Java how to program第五版的时候,写过一个猜数字小游戏,是用Applet写的: 现在,我要用Swing重写这个小游戏,同时,加入一些新功能,如:背景颜色(红色表示偏高,蓝色表示偏低).弹框.字体控制.布局管理器的使用. 运行截屏: 代码如下: //Guess a number between 1 and 1000 //Java how to program, 10/e, Exercise 12.14 //by pandenghuang@163.com /

  • Java swing 图像处理多种效果实现教程

    项目记录: 1.图像原理 通常图像都是2D,对一副图像,可以看做其宽w*高h的一个二维数组, 即 图像=int[w][h],在w和h位置的每一个 int 值,就是这个点的像素值. 图像处理的本质是:对代表图像二维数组中的值进行重新计算. 2.思路: 将一张图片转化成一个int型癿二维数组 对于每一个像素点大小和颜色进行计算达到图像处理的效果. 在画笔中设置好颜色,填充形状然后将新的图片画出. 3.实现效果 获取像素点方法,首先利用文件imageIO读取图片,然后根据图片长宽进行遍历得到每个像素点

  • JAVA swing布局管理器实例解析

    组件在容器(比如Jframe)中的位置和大小是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理. 种类 java共提供了五种布局管理器,只介绍三种是最常见的布局管理器. 边界布局BorderLayout 边界布局将容器简单的划分为东南西北中5个区域,中间区域最大.JFrame.JDialog默认布局就是BorderLayout. /* * 作者:白客C * 时间:2020年03月05日 * 内容:gui窗体 * 步骤: * 1.继承JFrame * 2.定义

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

    看到很多人都在询问怎么在java swing中只关闭当前的窗体,因此写下此文. 主界面主要是有两个JButton,一个是通过按钮事件调起另一个JFame,另一个是关闭当前窗体. 1.关闭当前窗体不能使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法,可以使用 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 2.通过JButton事件不能使用exit(),这样会使得整个程序的窗体全部关闭,可以使

  • Java Swing窗体关闭事件的调用关系

    Java Swing的窗体和对话框的关闭事件无非就是windowClosing和windowClosed这两个方法,如果要在关闭时进行"是否退出"之类的提示或保存数据等操作时则需要用到这些方法,但到底是该用哪个方法则有一定的讲究. windowClosing用于窗体关闭时被调用,这个时候窗体还处在运行并显示当中,所以为了方便可以把这个方法称为关闭前调用的方法.值得注意的是当我们按下窗体或对话框的的右上角的关闭按钮时此方法会被调用. windowClosed用于窗体被关闭后被调用,一般当

  • Java Swing实现窗体添加背景图片的2种方法详解

    本文实例讲述了Java Swing实现窗体添加背景图片的2种方法.分享给大家供大家参考,具体如下: 在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1. 利用JLabel加载图片 利用JLabel自带的setIcon(Icon icon)加载icon,并设置JLabel对象的位置和大小使其完全覆盖窗体.这是一个很取巧的办法,代码非常简单,如下所示. JLabel lbBg = new JLabel(imageIcon); lbBg.setBound

  • Java Swing实现让窗体居中显示的方法示例

    本文实例讲述了Java Swing实现让窗体居中显示的方法.分享给大家供大家参考,具体如下: Swing组件是AWT组建的增强组件,是功能强大的"轻量级组件".这里来简单介绍一下Swing实现窗体居中显示的方法. 其他不多说,直接上代码! package awtDemo; import java.awt.Toolkit; import javax.swing.JFrame; @SuppressWarnings("serial") public class AppWi

  • Java swing五子棋的实现方法

    今天给大家介绍一下如何用Java swing实现五子棋的开发即用Java开发图形界面程序五子棋,代码由于太多,只贴部分,最下面会附上下载地址,废话不多说,下面我们先看一下运行结果: 接下来我们看代码: 首先是创建主frame框架界面: package org.liky.game.frame; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import

  • Java Swing组件下拉菜单控件JComboBox用法示例

    本文实例讲述了Java Swing组件下拉菜单控件JComboBox用法.分享给大家供大家参考,具体如下: JComboBox是Swing中的下拉菜单控件.它永远只能选中一个项目,然而比单选按钮节省空间.如果使用setEditable设置为true则内部选项的文本可以编辑,因此这种组件被称为组合框.注意,对选项的编辑只会影响当前项,而不会改变列表内容.可以使用addItem方法来添加选项列表,或者使用insertItemAt在任何位置插入选项:然而如果有大量选项需要添加,这种方法是非常笨重的,可

  • Java Swing最详细基础知识总结

    一.简介 Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕显示元素.它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT.它们是JFC的一部分.它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们.这意味着你可以在任意平台上使用JAVA支持的任意面板.轻量级

  • java swing编程入门代码编写(java编程入门)

    Swing编程基本流程 第一步: 取得主窗体 复制代码 代码如下: JFrame jf = new JFrame("Demo1"); 第二步:获得主窗体的容器 复制代码 代码如下: Container c = jf.getContentPane(); 第三步:设置容器布局 复制代码 代码如下: c.setLayout(new FlowLayout(FlowLayout.LEFT,20,20)); 第四步:添加组件及设置组件属性 复制代码 代码如下: JLabel label1 = ne

  • Java Swing组件复选框JCheckBox用法示例

    本文实例讲述了Java Swing组件复选框JCheckBox用法.分享给大家供大家参考,具体如下: JCheckBox是Swing中的复选框.所谓复选框就是指,可以同时存在多个这样的控件,它们可以有多个处于被选中状态.对于每一个复选框而言,它只有选中和未选中两种状态. JCheckBox的常用方法如下图所示: 可以为它添加ActionListener对象来响应事件. 使用demo如下: JCheckBoxDemo.java package awtDemo; import java.awt.Bo

  • Java Swing组件单选框JRadioButton用法示例

    本文实例讲述了Java Swing组件单选框JRadioButton用法.分享给大家供大家参考,具体如下: JRadioButton是Swing中的单选框.所谓单选框是指,在同一个组内虽然有多个单选框存在,然而同一时刻只能有一个单选框处于选中状态.它就像收音机的按钮,按下一个时此前被按下的会自动弹起,故因此得名.因此,在添加JRadioButton控件时,要记得将它们添加到同一个ButtonGroup中. JRadioButton的常用方法如下图所示: 可以为它添加ActionListener对

随机推荐