新聞中心
JAVA中怎么關(guān)閉一個窗口
java關(guān)閉窗口可以使用dispose(),只是該窗體在內(nèi)存中所占有的資源得到了釋放,而整個程序并沒有因此而退出,如果整個程序要退出,在以java.awt中的frame為控件時,需手動添加:System.exit();
創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為肅北企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),肅北網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
而在以javax.Swing中的jFrame為控件時,一般不需要再寫相應(yīng)的事件,默認(rèn)點(diǎn)擊窗體上的小叉時,是隱藏,當(dāng)然你可更改其參數(shù)。
Java jframe中如何實(shí)現(xiàn)窗口的關(guān)閉
效果圖
參考代碼和注釋如下
import?java.awt.event.*;
import?javax.swing.*;
public?class?DemoFrame?extends?JFrame{
JButton?jbExit;
public?DemoFrame()?{
jbExit?=?new?JButton("退出");
//當(dāng)點(diǎn)擊退出?按鈕時候的響應(yīng)器
jbExit.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
doExit();//退出時候的方法
}
});
JPanel?jp?=?new?JPanel();
jp.add(jbExit);
add(jp);
setTitle("窗口");//?窗口標(biāo)題
setSize(380,?185);//?窗口大小
setLocationRelativeTo(null);//?窗口居中
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//通常添加這行代碼,點(diǎn)擊窗口右下角的關(guān)閉時會結(jié)束程序
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//右下角的關(guān)閉,不主動采取任何行動
//當(dāng)點(diǎn)擊窗口右上角的關(guān)閉按鈕時候的響應(yīng)器
addWindowListener(new?WindowAdapter()?{
@Override
public?void?windowClosing(WindowEvent?e)?{
doExit();
}
});
}
//?main方法
public?static?void?main(String[]?args)?{
new?DemoFrame().setVisible(true);
}
//退出時候的選擇
private?void?doExit()?{
int?n?=?JOptionPane.showConfirmDialog(null,?"你確定要退出嗎?",?"消息提示",JOptionPane.YES_NO_OPTION);
//取消選擇是?-1?,確定是0?,取消是1
System.out.println(n);
if(n==0)?{?//如果選擇了確定
System.exit(0);//那么退出
}
}
}
JAVA如何用按鈕關(guān)閉窗體
很久沒有用過界面編程了,就當(dāng)復(fù)習(xí)一下了,哈哈
如一樓所說的,給按鈕加一個監(jiān)聽器ActionListener,寫一個實(shí)現(xiàn)方法
actionPerformed.此時當(dāng)按鈕點(diǎn)擊時會調(diào)用actionPerformed方法,代碼如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Close extends JFrame implements ActionListener{
JButton close;
public Close(){
close = new JButton("close");//增加一個按鈕
add(close);
close.addActionListener(this);//給按鈕增加一個監(jiān)聽器
setLayout(new FlowLayout());
setSize(200,100);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//捕捉到按鈕點(diǎn)擊時的事件處理方法
//按鈕點(diǎn)擊時一定會自動執(zhí)行actionPerformed(ActionEvent e)方法
public void actionPerformed(ActionEvent e){
//關(guān)閉整個應(yīng)用程序.如果只是是想關(guān)閉當(dāng)前窗口,可以用
//dispose();
System.exit(0);
}
public static void main(String[] args){
new Close();
}
}
java程序關(guān)閉窗口代碼
import?java.applet.*;
import?java.awt.Color;
import?java.awt.Frame;
import?javax.swing.JFrame;
import?java.awt.event.*;
public?class?FirstFrame?extends?Frame?{
public?static?void?main(String?args[])?{
FirstFrame?fr?=?new?FirstFrame("First?contianer!");
fr.setSize(240,?240);
//繼承JFrame的關(guān)閉窗口代碼
//fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//繼承Frame的
fr.addWindowListener(new?WindowAdapter()?{????
public?void?windowClosing(WindowEvent?e)?{????????
System.exit(0);//退出系統(tǒng)???
}
});
fr.setVisible(true);
}
public?FirstFrame(String?str)?{
super(str);
}
}
java中關(guān)閉當(dāng)前窗口用什么代碼
setDefaultCloseOperation(JFrame.EXIT_ON_CLOES)會讓整個程序都退出
JFrame.DISPOSE_ON_CLOSE只讓當(dāng)前的窗口關(guān)閉而已
java中關(guān)閉窗口的方法
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下運(yùn)行通過,但是就是不能關(guān)不掉!
什么原因呢?
其中有以下幾種解決方法:
1:
把main函數(shù)改為如下
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 }
這種方法我有點(diǎn)不解,addWindowListener()括號里是怎么回事,我有點(diǎn)納悶,我還沒見過這樣的形式,不過我猜可能是實(shí)現(xiàn)了java.awt.event.WindowAdapter()類里面的一個抽象方法windowClosing(),但是我真沒有見過這種格式,求解釋。
2:
對WINDOWS_CLOSING事件做出響應(yīng),每個窗口都有3個控制圖標(biāo),其中最小化和最大化操作Frame可自動完成,而關(guān)閉窗口的操作不能通過單擊關(guān)閉圖標(biāo)實(shí)現(xiàn),需要程序?qū)iT書寫有關(guān)的代碼,其實(shí)這種方法與上一種一樣,則不過換了一種格式,一種初學(xué)者更明白易懂的格式。
在FrameInOut()構(gòu)造函數(shù)里面添加監(jiān)聽函數(shù),添加監(jiān)聽函數(shù)之后構(gòu)造函數(shù)如下:
FrameInOut()
{
super("圖形界面的Java Application程序");
prompt=new Label("請輸入您的名字");
input=new TextField(6);
output=new TextField(20);
setLayout(new FlowLayout());
addWindowListener(new HandleWin()); //添加監(jiān)聽函數(shù),引發(fā)WindowEvent事件
add(prompt);
add(input);
add(output);
input.addActionListener(this);
setSize(300,200);
setVisible(true);
}
其中HandleWin()為內(nèi)部類,主要實(shí)現(xiàn)WindowListener借口,添加監(jiān)聽之后會引發(fā)WindowEvent類代表的所以七中事件,具體情況如下:
(1)WINDOW_ACTIVATED:代表窗口被激活(在屏幕的最前方待命)。
(2)WINDOW_DEACTIVATED:代表窗口失活(其他窗口被激活后原活動窗口失活)。
(3)WINDOW_OPENED:代表窗口被打開。
(4)WINDOW_CLOSED:代表窗口被關(guān)閉(關(guān)閉窗口后發(fā)生)。
(5)WINDOW_CLOSING:代表窗口正在被關(guān)閉(指關(guān)閉前。如單擊窗口標(biāo)題欄上的關(guān)閉按鈕時)。
(6)WINDOW_ICONIFIED:代表使窗口最小化成圖標(biāo)。
(7)WINDOW_DEICONIFIED:代表使窗口從圖標(biāo)恢復(fù)
在WindowEvent類的主要方法有:
public window getWindow();
此方法返回引發(fā)當(dāng)前WindowEvent事件的具體窗口對象,與getSource()方法返回的是相同的事件引用。
HandleWin定義如下:
class HandleWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
(e.getWindow()).dispose();
System.exit(0);
}
}
HandleWin是窗口事件的裁剪類WindowAdapter的子類,重載了WindowClosing()方法。
當(dāng)然也可以這樣寫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 }
分享題目:java窗體關(guān)閉的代碼,java自動關(guān)閉窗口
網(wǎng)頁路徑:http://fisionsoft.com.cn/article/dsgjips.html