当前位置:首页 » 编程语言 » 关闭窗口java

关闭窗口java

发布时间: 2024-11-06 23:37:44

‘壹’ java 如何实现点击关闭后 关闭窗口 求详细代码

方法一:
类 JFrame
javax.swing.JFrame

JFrame中的方法void setDefaultCloseOperation(int)可以设置
以下为改方法的用法:

setDefaultCloseOperation
public void setDefaultCloseOperation(int operation)设置用户在此窗体上发起
"close" 时默认执行的操作。必须指定以下选项之一:

DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的
WindowListener 对象的 windowClosing 方法中处理该操作。
HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener
对象后自动隐藏该窗体。
DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener
的对象后自动隐藏并释放该窗体。
EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit
方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为 HIDE_ON_CLOSE。更改此属性的值将导致激发属性更改事件,其属性名称为
"defaultCloseOperation"。

注:当 Java 虚拟机 (VM) 中最后一个可显示窗口被释放后,虚拟机可能会终止

要实现你说的,应该采用
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

方法二:

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Test extends JFrame {

public Test(){
this.setTitle("title");
this.setSize(300,200);
this.setLocation(100,100);

//设置关闭时什么也不做
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
//监听关闭按钮的点击操作
this.addWindowListener(new WindowAdapter(){
//new 一个WindowAdapter 类 重写windowClosing方法
//WindowAdapter是个适配器类 具体看jdk的帮助文档
public void windowClosing(WindowEvent e) {
//这里写对话框
if(JOptionPane.showConfirmDialog(null,
"退出","提
示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION){

System.exit(0);
}
}

});

this.setVisible(true);
}

public static void main(String[] args) {
new Test();
}

}
分享

‘贰’ java swing 窗体关闭的方法 有哪些

Jframe的关闭方法:

setDefaultCloseOperation(EXIT_ON_CLOSE);

frame的关闭方法如下:

this.addWindowListener(new java.awt.event.WindowAdapter() {

public void windowClosing(java.awt.event.WindowEvent e) {

System.exit(0);

}

});
一般两种方法:
一种是System.exit(0);
另一种是setVisible(false);

‘叁’ 如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口。

  • 首先分析需要的GUI技术

java中一般使用swing 和awt技术来实现图形界面,Swing组件较多,功能比较强大,所以这里使用Swing组件来实现。窗口使用(JFrame),按钮使用(JButton)。


  • 设想一个符合题目需求的场景

两个窗口关联并且跳转,最常见的场景就是登陆了。

登陆窗口,输入用户名和密码,如果成功就跳转到主窗口


  • 核心逻辑,跳转窗口的关键代码

    一般可以隐藏本窗口(setVisible(false);),显示新窗口来实现窗口的跳转。

但是隐藏窗口,会在后面浪费系统资源。

如果不再使用该窗口,应该彻底销毁(dispose();),释放系统资源


  • 代码和注释

LoginFrame 类

importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;

//LoginFrame登陆窗口功能实现用户登陆,如果成功就跳转
//LoginFrame继承于窗口类,并实现ActionListener接口
{
//申明需要的组件
JButtonjb1,jb2;//按钮
JTextFieldjtf1;//文本框
JPasswordFieldjpf1;//密码框

publicLoginFrame(){
//窗口属性的设置
setTitle("登陆窗");//窗口标题
setSize(300,180);//窗口大小
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭窗口则退出虚拟机
setLayout(newFlowLayout());//设置布局流式布局

JPaneljp=newJPanel(newGridLayout(4,1));//设置面板为表格布局4行1列
//第一行
JPaneljp1=newJPanel();
JLabeljl1=newJLabel("账号");
jtf1=newJTextField(12);
jp1.add(jl1);
jp1.add(jtf1);
jp.add(jp1);
//第二行
JPaneljp2=newJPanel();
JLabeljl2=newJLabel("密码");
jpf1=newJPasswordField(12);
jp2.add(jl2);
jp2.add(jpf1);
jp.add(jp2);
//第三行
JPaneljp3=newJPanel();
jb1=newJButton("登陆");
jb1.addActionListener(this);//添加动作响应器
jb2=newJButton("重置");
jb2.addActionListener(this);//添加动作响应器
jp3.add(jb1);
jp3.add(jb2);
jp.add(jp3);
//第四行
JPaneljp4=newJPanel();
JLabeljl3=newJLabel("提示:账号admin密码123");
jl3.setForeground(Color.DARK_GRAY);
jp4.add(jl3);
jp.add(jp4);

add(jp);

}

//动作响应
publicvoidactionPerformed(ActionEvente){
Stringcmd=e.getActionCommand();//根据动作命令,来进行分别处理
if(cmd.equals("登陆")){
Stringid=jtf1.getText();//取得用户名
Stringkey=newString(jpf1.getPassword());//取得密码
if(id.equals("admin")&&key.equals("123")){//判断是否登录成功
//如果登录成功
setVisible(false);//本窗口隐藏,
newMainFrame(id).setVisible(true);//新窗口显示
dispose();//本窗口销毁,释放内存资源
}else{
//如果登录失败弹出提示
JOptionPane.showMessageDialog(this,"用户名或者密码错误.","通知",JOptionPane.ERROR_MESSAGE);
clearText();//清空文本框密码框的输入
}
}elseif(cmd.equals("重置")){
clearText();
}

}

privatevoidclearText(){//清空文本框,密码框的输入
jtf1.setText("");
jpf1.setText("");
}

//main方法,程序的入口
publicstaticvoidmain(String[]args){
newLoginFrame().setVisible(true);//创建登录窗口,并可见
}

}

MainFrame类

importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;

{

publicMainFrame(Stringname){
setTitle("主窗口");//标题
setSize(300,260);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPaneljp=newJPanel();
JLabeljl1=newJLabel("欢迎");
JLabeljl2=newJLabel(name);
jl2.setForeground(Color.BLUE);//设置文本颜色
JLabeljl3=newJLabel("使用系统.");
jp.add(jl1);
jp.add(jl2);
jp.add(jl3);
add(jp,BorderLayout.NORTH);
JTextAreajta=newJTextArea();
jta.setLineWrap(true);
jta.append("消息提示");
jta.append("消息!通知~!");
JScrollPanejsp=newJScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(jsp);
JPaneljp2=newJPanel();
JButtonjb=newJButton("退出");
jb.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
System.exit(0);//退出
}
});
jp2.add(jb);
add(jp2,BorderLayout.SOUTH);
}

}


  • 运行效果图

‘肆’ java中关闭当前窗口用什么代码

你用的 swing 吗?加上 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

或者加上窗口事件监听器:

addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent we) {
dispose();
}
});

热点内容
电脑配置信息被改怎么看到 发布:2024-11-07 01:17:06 浏览:776
linuxgc 发布:2024-11-07 00:51:56 浏览:316
乐视改密码是什么意思 发布:2024-11-07 00:47:07 浏览:486
linux图形界面系统 发布:2024-11-07 00:42:00 浏览:999
群控ip是服务器ip么 发布:2024-11-07 00:39:43 浏览:564
安卓手机上制表app哪个好 发布:2024-11-07 00:28:06 浏览:117
电脑进服务器卡了退不出来怎么办 发布:2024-11-07 00:23:30 浏览:763
安卓哪个型号不卡 发布:2024-11-07 00:19:03 浏览:485
mxml库编译 发布:2024-11-07 00:18:07 浏览:213
dnsdns服务器地址 发布:2024-11-07 00:16:23 浏览:11