效果圖
在吉州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、網(wǎng)站建設 網(wǎng)站設計制作按需求定制制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站設計,全網(wǎng)整合營銷推廣,外貿(mào)營銷網(wǎng)站建設,吉州網(wǎng)站建設費用合理。
你想要觸發(fā)的是窗口關(guān)閉事件windowClosed, 那么你需要調(diào)用dispose方法,對窗口進行銷毀.
修改代碼如下
public?void?windowClosing(WindowEvent?e)?{
System.out.println("windowClosing--窗體正在關(guān)閉事件");
//f.setVisible(false);//隱藏窗口
f.dispose();//銷毀窗口--這行代碼會觸發(fā)windowClosed事件悶祥者
}
還有宴侍其他一些細節(jié)的修改,參考下面的代碼
import?java.awt.*;
import?java.awt.event.*;
//類名不要寫一個小寫字母,推薦寫一個完整的名詞來作為類名
public?class?EventDemo?{
public?static?void?main(String[]?args)?{
Frame?f?=?new?Frame("hello");
f.setSize(300,?300);
f.setLocation(300,?200);
//f.setVisible(true);//不要先顯示窗口,?先顯示了窗口,就看不到"窗口打開事件"了
f.addWindowListener(new?WindowListener()?{
@Override
public?void?windowOpened(WindowEvent?e)?{
System.out.println("windowOpened--窗體打開事件");
}
@Override
public?void?windowIconified(WindowEvent?e)?{
System.out.println("windowIconified--窗體圖標化事件");
}
@Override
public?void?windowDeiconified(WindowEvent?e)?{
System.out.println("windowDeiconifie--窗體取消圖標化事件");
}
@Override
public?void?windowDeactivated(WindowEvent?e)?{
System.out.println("windowDeactivated--窗體停用事件");
}
@Override
public?void?windowClosing(WindowEvent?e)?{
System.out.println("windowClosing--窗體正在關(guān)閉事件");
//f.setVisible(false);//隱藏窗口
f.dispose();//銷毀窗口
}
@Override
public?void?windowClosed(WindowEvent?e)?{
System.out.println("windowClosed--窗體關(guān)閉事件");
System.exit(0);
}
@Override
public?void?windowActivated(WindowEvent?e)?{
System.out.println("windowActivated--窗體激螞薯活事件");
}
});
f.setVisible(true);//窗口顯示
}
}
你少了一個菜單項,在菜單項上添加監(jiān)聽器。
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?javax.swing.JFrame;
import?javax.swing.JMenu;
import?javax.swing.JMenuBar;
import?javax.swing.JMenuItem;
import?javax.swing.JOptionPane;
import?javax.swing.SwingUtilities;
public?class?TestWin?extends?JFrame?{
{
JMenuBar?jmb?=?new?JMenuBar();//創(chuàng)建菜單欄
JMenu?jm1?=?new?JMenu("幫助");//創(chuàng)建菜單
jmb.add(jm1);
JMenuItem?瞎?jié)Ljmi?=?new?JMenuItem("幫助");//創(chuàng)建菜單項
jm1.add(jmi);//把菜單項添加到菜單中
jmi.addActionListener(new?ActionListener()?{//給菜單項添加動作監(jiān)聽器
@Override
public?void?actionPerformed(ActionEvent?e)?{
JOptionPane.showMessageDialog(TestWin.this,?"窗口中有一磨游余句話");//顯示消息對話框
}
});
setJMenuBar(jmb);
setTitle("磨譽時鐘");//?標題
setSize(800,?600);
setLocationRelativeTo(null);//?窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//?窗口點擊關(guān)閉時,退出程序
setVisible(true);//?窗口可見
}
public?static?void?main(String[]?args)?{
SwingUtilities.invokeLater(()?-?new?TestWin());
}
}
import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JOptionPane;
public class Windows1 {
Frame f;
public void display() {
f = new Frame("窗口事件1");
f.setSize(300, 200);
f.addWindowListener(new WinClose(f)); // 為窗口f注冊窗口事件監(jiān)聽器為WinClose類對象
f.setVisible(true);
}
public static void main(String args[]) {
(new Windows1()).display();
}
}
class WinClose implements WindowListener {
private Frame f;
public WinClose(Frame f) {
super();
this.f = f;
}
public void windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(f, "退出");
f.dispose();
System.exit(0); // 實現(xiàn)WindowListener接口中配純簡的抽象方法,在windowClosing方法中寫入語句,褲寬結(jié)束程序培褲
}
public void windowActivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub
}
public void windowDeactivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
public void windowDeiconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
public void windowIconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
public void windowOpened(WindowEvent arg0) {
// TODO Auto-generated method stub
}
}
方法一:
類 JFrame
javax.swing.JFrame
JFrame中的方法void setDefaultCloseOperation(int)可以設置
以下為改方法的用法:
setDefaultCloseOperation
public void setDefaultCloseOperation(int operation)設置用戶在此窗體上發(fā)起
"close" 時默認執(zhí)行的操作。必須脊銷指定以下選項之一:
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定義):不執(zhí)行任何操作;要求程序在已注冊的
WindowListener 對象的 windowClosing 方法中處理該操作。
HIDE_ON_CLOSE(在 WindowConstants 中定義):調(diào)用任意已注冊的 WindowListener
對象后自動隱藏該窗體。
DISPOSE_ON_CLOSE(在 WindowConstants 中定義):調(diào)用任意已注冊 WindowListener
的對象后自動隱藏并釋放該窗體。
EXIT_ON_CLOSE(在 JFrame 中定義):使用 System exit
方法退出應用程序。僅在應用程序中使用。
默認情況下,該值被設置為 HIDE_ON_CLOSE。更改此屬性的值將導致激發(fā)屬性更改事件,其屬性名稱為
"defaultCloseOperation"。
注:當 Java 虛擬機 (VM) 中最衫野慶后一個可顯示窗口被釋放后,虛擬機可能會終止
要實現(xiàn)你說的,應該采用
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
方法二:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends JFrame {
public Test(){
this.setTitle("title");
this.setSize(300,200);
this.setLocation(100,100);
//設置關(guān)閉時什么也不做
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
//監(jiān)聽關(guān)閉按鈕的點擊操作
this.addWindowListener(new WindowAdapter(){
//new 一個WindowAdapter 類 重寫windowClosing方法
//WindowAdapter是個適配器類 具體看jdk的幫助文或握檔
public void windowClosing(WindowEvent e) {
//這里寫對話框
if(JOptionPane.showConfirmDialog(null,
"退出","提
示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
this.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}