作者TonyQ (骨头)
看板java
标题Re: [问题] 写swing的程式,按视窗的X後,会去执行 …
时间Sat Apr 15 15:25:56 2006
※ 引述《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
1F:推 kairy:推,刚好用得到,太感谢 05/13 15:50