導航:首頁 > 編程語言 > 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窗口關閉事件相關的資料

熱點內容
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
php求積 瀏覽:297