如何在Java应用程序中添加系统退出事件处理机制(转载)

如何在Java应用程序中添加系统退出事件处理机制(转载),第1张

具体演示代码如下:/**********************************************************************************************************************************************************/package untitled14import java.util.*import java.io.*/*** This application is used to demo how to hook the event of an application*/public class Untitled1 {public Untitled1() {doShutDownWork()}/**************************************************************************** This is the right work that will do before the system shutdown* 这里为了演示,为应用程序的退出增加了一个事件处理,* 当应用程序退出时候,将程序退出的日期写入 d:\t.log文件**************************************************************************/private void doShutDownWork() {Runtime.getRuntime().addShutdownHook(new Thread() {public void run() {try {FileWriter fw = new FileWriter("d:\\t.log")System.out.println("I'm going to end")fw.write("the application ended! " + (new Date()).toString())fw.close()}catch (IOException ex) {}}})}/***************************************************** 这是程序的入口,仅为演示,方法中的代码无关紧要***************************************************/

系统不关闭,只是隐藏窗体!在按钮的监听事件中获取到窗体,然后设置窗体的visible属性为false既可以

例如:

public class window {

public static void main(String[] arg0){

myWindow mw=new myWindow()

mw.setVisible(true)

}

}

class myWindow extends JFrame{

private JButton jb=null

public myWindow() {

jb=new JButton("test")

jb.addActionListener(new mylistener(this))

this.add(jb)

}

}

class mylistener implements ActionListener{

private myWindow mw=null

public mylistener(myWindow mw){

this.mw=mw

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

mw.setVisible(false)

}

}

你少了一个菜单项,在菜单项上添加监听器。

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()//创建菜单栏

  JMenu jm1 = new JMenu("帮助")//创建菜单

  jmb.add(jm1)

  JMenuItem jmi = new JMenuItem("帮助")//创建菜单项

  jm1.add(jmi)//把菜单项添加到菜单中

  jmi.addActionListener(new ActionListener() {//给菜单项添加动作监听器

   @Override

   public void actionPerformed(ActionEvent e) {

    JOptionPane.showMessageDialog(TestWin.this, "窗口中有一句话")//显示消息对话框

   }

  })

  setJMenuBar(jmb)

  setTitle("时钟")// 标题

  setSize(800, 600)

  setLocationRelativeTo(null)// 窗口居中

  setDefaultCloseOperation(EXIT_ON_CLOSE)// 窗口点击关闭时,退出程序

  setVisible(true)// 窗口可见

 }

 public static void main(String[] args) {

  SwingUtilities.invokeLater(() -> new TestWin())

 }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11701924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存