导航:首页 > 编程语言 > java窗口关闭事件

java窗口关闭事件

发布时间:2022-04-22 03:27:37

A. java中关闭窗口的方法

1 package applicationGraphicsInOut;
2 import java.awt.*;
3 import java.awt.event.*;
4 public class ApplicationGraphicsInOut {
5 public static void main(String args[])
6 {
7 new FrameInOut();
8 }
9
10 }
11 class FrameInOut extends Frame implements ActionListener
12 {
13 Label prompt;
14 TextField input,output;
15 FrameInOut()
16 {
17 super("图形界面的Java Application程序");
18 prompt=new Label("请输入您的名字");
19 input=new TextField(6);
20 output=new TextField(20);
21 setLayout(new FlowLayout());
22 add(prompt);
23 add(input);
24 add(output);
25 input.addActionListener(this);
26 setSize(300,200);
27 setVisible(true);
28 }
29 public void actionPerformed(ActionEvent e)
30 {
31 output.setText(input.getText()+",欢迎你");
32 }
33 }

该程序在Eclipse下运行通过,但是就是不能关不掉!

什么原因呢?

其中有以下几种解决方法:

1:

把main函数改为如下

1 public static void main(String args[])
2 {
3 Frame fr=new FrameInOut();
4 fr.addWindowListener(new java.awt.event.WindowAdapter()
5 {
6 public void windowClosing(java.awt.event.WindowEvent e)
7 {
8 System.exit(0);
9 }
10 });
11
12 }

这种方法我有点不解,addWindowListener()括号里是怎么回事,我有点纳闷,我还没见过这样的形式,不过我猜可能是实现了java.awt.event.WindowAdapter()类里面的一个抽象方法windowClosing(),但是我真没有见过这种格式,求解释。

2:

对WINDOWS_CLOSING事件做出响应,每个窗口都有3个控制图标,其中最小化和最大化操作Frame可自动完成,而关闭窗口的操作不能通过单击关闭图标实现,需要程序专门书写有关的代码,其实这种方法与上一种一样,则不过换了一种格式,一种初学者更明白易懂的格式。

在FrameInOut()构造函数里面添加监听函数,添加监听函数之后构造函数如下:

FrameInOut()
{
super("图形界面的Java Application程序");
prompt=new Label("请输入您的名字");
input=new TextField(6);
output=new TextField(20);
setLayout(new FlowLayout());
addWindowListener(new HandleWin()); //添加监听函数,引发WindowEvent事件
add(prompt);
add(input);
add(output);
input.addActionListener(this);
setSize(300,200);
setVisible(true);
}

其中HandleWin()为内部类,主要实现WindowListener借口,添加监听之后会引发WindowEvent类代表的所以七中事件,具体情况如下:

(1)WINDOW_ACTIVATED:代表窗口被激活(在屏幕的最前方待命)。

(2)WINDOW_DEACTIVATED:代表窗口失活(其他窗口被激活后原活动窗口失活)。

(3)WINDOW_OPENED:代表窗口被打开。

(4)WINDOW_CLOSED:代表窗口被关闭(关闭窗口后发生)。

(5)WINDOW_CLOSING:代表窗口正在被关闭(指关闭前。如单击窗口标题栏上的关闭按钮时)。

(6)WINDOW_ICONIFIED:代表使窗口最小化成图标。

(7)WINDOW_DEICONIFIED:代表使窗口从图标恢复

在WindowEvent类的主要方法有:

public window getWindow();

此方法返回引发当前WindowEvent事件的具体窗口对象,与getSource()方法返回的是相同的事件引用。

HandleWin定义如下:

class HandleWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
(e.getWindow()).dispose();
System.exit(0);
}
}

HandleWin是窗口事件的裁剪类WindowAdapter的子类,重载了WindowClosing()方法。

当然也可以这样写HandleWin

1 class HandleWin implements WindowListener
2 {
3 public void windowClosing(WindowEvent e)
4 {
5 (e.getWindow()).dispose();
6 System.exit(0);
7 }
8
9 @Override
10 public void windowActivated(WindowEvent arg0) {
11 // TODO Auto-generated method stub
12
13 }
14
15 @Override
16 public void windowClosed(WindowEvent arg0) {
17 // TODO Auto-generated method stub
18
19 }
20
21 @Override
22 public void windowDeactivated(WindowEvent arg0) {
23 // TODO Auto-generated method stub
24
25 }
26
27 @Override
28 public void windowDeiconified(WindowEvent arg0) {
29 // TODO Auto-generated method stub
30
31 }
32
33 @Override
34 public void windowIconified(WindowEvent arg0) {
35 // TODO Auto-generated method stub
36
37 }
38
39 @Override
40 public void windowOpened(WindowEvent arg0) {
41 // TODO Auto-generated method stub
42
43 }
44 }

B. java窗口关闭事件

看API,监听

public void addWindowListener(WindowListener l)
事件,并在
void
windowClosing(WindowEvent e)

事件中处理

C. Java 关闭事件

this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
Window w=e.getWindow();
w.dispose();
}
}
);
这个方法放错位置了,放在构造方法里就对了,你放在了actionPerformered里面。我发现的是这里,不知道是不是。

D. 运行java代码怎样操作显示windowclosed--窗体关闭事件,求解答!!!

效果图

importjava.awt.*;
importjava.awt.event.*;
//类名不要写一个小写字母,推荐写一个完整的名词来作为类名
publicclassEventDemo{
publicstaticvoidmain(String[]args){
Framef=newFrame("hello");
f.setSize(300,300);
f.setLocation(300,200);
//f.setVisible(true);//不要先显示窗口,先显示了窗口,就看不到"窗口打开事件"了
f.addWindowListener(newWindowListener(){
@Override
publicvoidwindowOpened(WindowEvente){
System.out.println("windowOpened--窗体打开事件");
}
@Override
publicvoidwindowIconified(WindowEvente){
System.out.println("windowIconified--窗体图标化事件");
}
@Override
publicvoidwindowDeiconified(WindowEvente){
System.out.println("windowDeiconifie--窗体取消图标化事件");
}
@Override
publicvoidwindowDeactivated(WindowEvente){
System.out.println("windowDeactivated--窗体停用事件");
}
@Override
publicvoidwindowClosing(WindowEvente){
System.out.println("windowClosing--窗体正在关闭事件");
//f.setVisible(false);//隐藏窗口
f.dispose();//销毁窗口
}
@Override
publicvoidwindowClosed(WindowEvente){
System.out.println("windowClosed--窗体关闭事件");
System.exit(0);
}
@Override
publicvoidwindowActivated(WindowEvente){
System.out.println("windowActivated--窗体激活事件");
}
});
f.setVisible(true);//窗口显示
}
}

E. java internalFrame窗口关闭事件监听

jInternalFrame1.setDefaultCloseOperation(JInternalFrame.EXIT_ON_CLOSE);
是不是要这个?还是下面这个:
jInternalFrame1.addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
你的事件处理

}
});

F. java窗口关闭事件。。。。

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这句话其实是1.4以后才有的,它代替了以前的WindowListener中的windoClose方法,EXIT_ON_CLOSE的意思是,当前窗口在点击关闭的时候,会关闭主线程,OK?所以你的所有应用都被关闭了

那么.你就不要这么设置,你的窗口在设置的时候写成,DISPOSE_ON_CLOSE就可以了.DIPOSE就是仅仅释放窗体资源,而不会关闭主线程.

这个DISPOSE_ON_CLOSE静态字段的设置,代替你在windoClose写"this.dispose()"

G. JAVA单击事件如何关闭当前窗口

只能用dispose释放当前窗口、比如this.dispose();
不能用System.exit(0)\因为这样会关闭JVM中所有的资源,也就是关闭所有界面,等于结束当前程序。

H. 在java中我在一个窗体里设置了关闭窗体事件,

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

classjdemo{

publicstaticintshowDialog(Componentc){
intdialogButton=JOptionPane.YES_NO_OPTION;
intdialogResult=JOptionPane.showConfirmDialog(null,"Areyousureyouwanttoquit?","Tips",dialogButton);
returndialogResult;
}

publicstaticvoidmain(String[]args){

SwingUtilities.invokeLater(newRunnable(){

publicvoidrun(){

finalJFramef=newJFrame("CloseingWindowsFormTest");

f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
f.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEventwe){
if(showDialog(f)==JOptionPane.NO_OPTION)return;//如果按了取消,则不退出
System.exit(0);//否则退出
}
});
f.setSize(300,200);
f.setLocationByPlatform(true);
f.setVisible(true);

}
});
}
}

I. JAVA关于窗体JFrame的关闭事件

//设置关闭后直接退出
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);


packageLogin;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.net.URL;
importjavax.swing.ComboBoxModel;
importjavax.swing.DefaultComboBoxModel;

importjavax.swing.JLabel;
importjavax.swing.JPasswordField;
importjavax.swing.JRadioButton;
importjavax.swing.JTextField;

importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JComboBox;
importjavax.swing.JOptionPane;
importjavax.swing.WindowConstants;
importjavax.swing.SwingUtilities;


/**
*'sJigloo
*SWT/SwingGUIBuilder,whichisfreefornon-commercial
*use.(ie,byacorporation,
*)thenyou
*.
*Pleasevisit

*.
*
*THISMACHINE,
*.
*/
.swing.JFrame{
privateJLabeljLabel_School_logo;
privateJLabeljLabel_user_name;
privateJLabeljLabel_passwd;
privateJButtonjButton_reg;
privateJButtonjButton_login;
;
privateJTextFieldjTextField_user_name;
privateJLabeljLabel_title;
privateintstudent_statue=0;
privateJComboBoxjComboBox1;
privateintmanager_statue=0;
/**
*
*/
/**
*
*/
/**
*Auto-
*/
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(newRunnable(){
publicvoidrun(){
NewJFrameinst=newNewJFrame();
inst.setTitle("教室管理系统登录");
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}

publicNewJFrame(){
super();
initGUI();
}

privatevoidinitGUI(){
try{
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
{
jLabel_School_logo=newJLabel();
getContentPane().add(jLabel_School_logo);
jLabel_School_logo.setBounds(0,0,86,84);
ImageIconlogo=newImageIcon("img/log.jpg");
jLabel_School_logo.setIcon(logo);
}
{
jLabel_title=newJLabel();
getContentPane().add(jLabel_title);
jLabel_title.setBounds(86,0,447,84);
ImageIcontitle=newImageIcon("img/title.jpg");
jLabel_title.setIcon(title);
}
{
jLabel_user_name=newJLabel();
getContentPane().add(jLabel_user_name);
jLabel_user_name.setText("u5b66u53f7uff1a");
jLabel_user_name.setBounds(155,131,51,31);
jLabel_user_name.setFont(newjava.awt.Font("叶根友毛笔行书2.0版",0,12));
}
{
jTextField_user_name=newJTextField();
getContentPane().add(jTextField_user_name);
jTextField_user_name.setBounds(199,135,151,23);
}
{
jLabel_passwd=newJLabel();
getContentPane().add(jLabel_passwd);
jLabel_passwd.setText("u5bc6u7801uff1a");
jLabel_passwd.setBounds(152,185,51,31);
jLabel_passwd.setFont(newjava.awt.Font("叶根友毛笔行书2.0版",0,12));
}
{
jPasswordField=newJPasswordField();
getContentPane().add(jPasswordField);
jPasswordField.setBounds(199,189,151,23);
}
{
jButton_login=newJButton();
getContentPane().add(jButton_login);
jButton_login.setText("u767bu5f55");
jButton_login.setBounds(199,235,68,23);
jButton_login.setFont(newjava.awt.Font("叶根友毛笔行书2.0版",0,12));
}
{
jButton_reg=newJButton();
getContentPane().add(jButton_reg);
jButton_reg.setText("u6ce8u518c");
jButton_reg.setBounds(282,235,68,23);
jButton_reg.setFont(newjava.awt.Font("叶根友毛笔行书2.0版",0,12));
jButton_reg.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEventevt){
jButton_regMouseClicked(evt);
}
});
}
{
ComboBoxModeljComboBox1Model=
newDefaultComboBoxModel(
newString[]{"学生/老师登录","管理员登录"});
jComboBox1=newJComboBox();
getContentPane().add(jComboBox1);
jComboBox1.setModel(jComboBox1Model);
jComboBox1.setBounds(199,90,152,23);
jComboBox1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jComboBox1ActionPerformed(evt);
}
});
}
pack();
this.setSize(549,334);
}catch(Exceptione){
//addyourerrorhandlingcodehere
e.printStackTrace();
}
}

(ActionEventevt){
if(jComboBox1.getSelectedIndex()==0)
{
jLabel_user_name.setText("学号:");
}
else
{
jLabel_user_name.setText("帐号:");
}
}

privatevoidjButton_regMouseClicked(MouseEventevt){
if(jComboBox1.getSelectedIndex()==1)
{
JOptionPane.showMessageDialog(NewJFrame.this,"管理员帐号不提供注册!","",JOptionPane.DEFAULT_OPTION);
}
else
{
regregister=newreg();
register.setTitle("注册");
register.setLocationRelativeTo(this);
register.setVisible(true);
}
}

}

//设置setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);在另一个方法,你怎么用到你这个F呢?

J. java Swing 界面关闭事件

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {
super.windowClosing(e);
//新建窗口。。。。。操作
//System.out.println("OK");
}

});

阅读全文

与java窗口关闭事件相关的资料

热点内容
数控铣床法兰克子程序编程 浏览:173
linux打包命令targz 浏览:996
抖音app是哪个 浏览:407
苹果app怎么上架 浏览:255
NA服务器地址 浏览:427
我的世界如何初始化服务器 浏览:97
哪个手机app天气预报最准 浏览:752
怎样把视频压缩至25m 浏览:570
vivox27文件夹怎么改变 浏览:727
新手玩狼人杀用什么app 浏览:615
pdf在线查看 浏览:954
安卓tv90如何关闭后台 浏览:683
php读取word乱码 浏览:755
minicom源码 浏览:1001
海尔冷柜压缩机 浏览:416
联通服务器如何调试信号 浏览:136
stata新命令 浏览:941
单调栈算法python 浏览:606
微信解压游戏怎么下载 浏览:962
忍三服务器不同如何登上账号 浏览:822