Re: [問題] 寫swing的程式,按視窗的X後,會去執行 …
※ 引述《Jnaive (嘿嘿)》之銘言:
: 請教各位大大一個swing的問題
: 我想要在按下視窗的X按紐後,去做些事
: 我的程式碼大概如下:
: 我發現我的程式在視窗執行後,main仍然持續的執行
: 我要如何修改,才能讓gui.go()那行以下要做的事,是在按X紐後才執行?
: 謝謝!!
打完一大篇要post之前重新看了一次問題
才發現我會錯意了 (嗚 期中考前寶貴的時間T.T ...我是笨蛋)
JFrame execute=new JFrame();
execute.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//如果用EXIT_ON_CLOSE結束時會類似System.exit(-1); 的狀況
//所以要用DISPOSE_ON_CLOSE
execute.setVisible(true);
while(execute.isValid()){
try{
Thread.sleep(3000);
//這是為了不要讓系統資源吃太兇,
//3000是3000毫秒 , 表示三秒偵測一次狀態
}catch(Exception e){}
System.out.println("還沒關");
}
System.out.println("關了");
底下這邊是不小心把它想太難所寫的一大篇
應該會有人有需要所以也貼出來 (其實是不甘心打一大篇沒貼 XD)
底下是我把題目誤解成按X後執行一些確認的動作,
再決定要不要把Frame關閉的回答內容。
------
基本上這個應該是要寫在Frame裡面
這是從API的Frame架構裡面擷取出來的XD
http://0rz.net/511eW
Frames are capable of generating the following types of WindowEvents:
WINDOW_CLOSING:
If the program doesn't explicitly hide or dispose the window while processing
this event, the window close operation is canceled.
Since:
JDK1.0
See Also:
WindowEvent,
Window.addWindowListener(java.awt.event.WindowListener), Serialized Form
我猜這應該是要寫
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/WindowAdapter.html
裡的windowClosing(WindowEvent e) event
然後再用Frame的addWindowListener()來add這個windowsListener
(別急著按←跳出去...不是都是我猜跟我在說 ...
後來小弟有試著去實作這個問題 發現其實還蠻簡單的 XD)
經過剛剛測了一下的結果
底下的GUI form可以做到 按X 詢問是否要關閉的功能 XD
import java.awt.event.*;
import javax.swing.*;
class PracticeGUI extends JFrame{
public static void main(String args[]){
PracticeGUI execute=new PracticeGUI();
execute.setVisible(true);
}
PracticeGUI(){
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
JFrame jf= (JFrame)e.getSource();
jf.setState(jf.DO_NOTHING_ON_CLOSE);
if(JOptionPane.showConfirmDialog(null,"確定關閉?","",
JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
jf.dispose();
}
}
}
);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setSize (700,500);
setTitle("練習用GUI");
}
}
--
嗄嗄 期中考週為甚麼我還混在這裡呀..
因為在這裡回文是一種快速增進自己功力和消除考試壓力的良方啊...
大家來討論Java吧!!!>///<~~~
--
String temp="relax"; | Life just like programing
while(buringlife) String.forgot(temp); | to be right or wrong
while(sleeping) brain.setMemoryOut(); | need not to say
stack.push(life.running); | the complier will
stack.push(scouting.buck()); | answer your life
stack.push(bowling.pratice()); | Bone everything
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.240.57
推
05/13 15:50, , 1F
05/13 15:50, 1F
java 近期熱門文章
PTT數位生活區 即時熱門文章