java 实现关机工具,托盘图标
来源:互联网 发布:在淘宝买到假货怎么办 编辑:程序博客网 时间:2024/05/29 18:04
以下是自己使用swing编写的windows关机工具,实现了托盘图标。
package com.gpengtao;import java.awt.AWTException;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.MenuItem;import java.awt.PopupMenu;import java.awt.SystemTray;import java.awt.TrayIcon;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.util.Calendar;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class CloseComputer extends JFrame implements ActionListener {/** * @author gpengtao */private static final long serialVersionUID = 1L;private JButton countDown;private JButton timeDown;private JButton cancel;private JLabel label;private JPanel panelNorth;private JPanel panelSouth;private TrayIcon trayIcon;private JFrame frame;/** * 构造方法 设置各种组建 */public CloseComputer() {super("关机工具");frame = this;countDown = new JButton("倒计时关机");timeDown = new JButton("定时关机");cancel = new JButton("取消关机");label = new JLabel("请选择关机方式");panelNorth = new JPanel();panelNorth.add(label);panelSouth = new JPanel();panelSouth.add(countDown);panelSouth.add(timeDown);panelSouth.add(cancel);countDown.addActionListener(this);timeDown.addActionListener(this);cancel.addActionListener(this);// ImageIcon(CloseComputer.class.getResource("/tray.png"));ImageIcon titleIcon = new ImageIcon("tray.png");this.setIconImage(titleIcon.getImage());this.add(panelNorth, BorderLayout.NORTH);this.add(panelSouth, BorderLayout.SOUTH);this.setResizable(false);this.setVisible(true);this.setSize(380, 125);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/** * 设置可以最小化 */this.addWindowListener(new WindowAdapter() {@Overridepublic void windowIconified(WindowEvent e) {setVisible(false);setExtendedState(JFrame.ICONIFIED);dispose();}});/** * 设置托盘图标 */if (SystemTray.isSupported()) {PopupMenu popupMenu = new PopupMenu();MenuItem item1 = new MenuItem("exit");MenuItem item2 = new MenuItem("open");popupMenu.add(item1);popupMenu.add(item2);item1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});item2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {setVisible(true);setExtendedState(JFrame.NORMAL);}});// ImageIcon(CloseComputer.class.getResource("/tray.png"));ImageIcon trayImg = new ImageIcon("tray.png");trayIcon = new TrayIcon(trayImg.getImage(), "关机工具", popupMenu);SystemTray sysTray = SystemTray.getSystemTray();try {sysTray.add(trayIcon);} catch (AWTException e) {e.printStackTrace();}trayIcon.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {if (e.getClickCount() == 2) {setVisible(true);setExtendedState(JFrame.NORMAL);}}});}}//构造函数@Overridepublic void actionPerformed(ActionEvent e) {if (e.getSource() == countDown) {CountDown();} else if (e.getSource() == timeDown) {TimeDown();} else if (e.getSource() == cancel) {CancelDown();}}/** * 倒计时关机实现 */void CountDown() {String time = JOptionPane.showInputDialog(this, "请输入倒计时时间 (秒):", null);try {Runtime.getRuntime().exec("shutdown -s -t " + time);} catch (IOException e) {e.printStackTrace();}}/** * 定时关机实现 */void TimeDown() {Dialog dialog = new Dialog(frame);int hour = dialog.getHour();int minute = dialog.getMinute();int second = dialog.getSecond();Calendar time = Calendar.getInstance();int nowHour = time.get(Calendar.HOUR);int nowMinute = time.get(Calendar.MINUTE);int nowSecond = time.get(Calendar.SECOND);int distance = hour * 60 * 60 + minute * 60 + second - nowHour * 60 * 60 - nowMinute * 60 - nowSecond;if (distance < 0) {JOptionPane.showMessageDialog(this, "时间输入有误 ╯﹏╰ ", "ERROR", JOptionPane.WARNING_MESSAGE);return;}try {Runtime.getRuntime().exec("shutdown -s -t " + distance);} catch (IOException e) {e.printStackTrace();}}/** * 取消关机实现 */void CancelDown() {JOptionPane.showMessageDialog(this, "您已经取消关机任务!");try {Runtime.getRuntime().exec("shutdown -a");} catch (IOException e) {e.printStackTrace();}}/** * Dilog内部类 * @author gpengtao * 定时关机时弹出的对话框,并获得数据 */class Dialog extends JDialog {private static final long serialVersionUID = 1L;private JTextField textHour;private JTextField textMinute;private JTextField textSecond;public Dialog(JFrame frame) {super(frame, "输入关机时间", true);textHour = new JTextField(3);textMinute = new JTextField(3);textSecond = new JTextField(3);this.setLayout(new FlowLayout());this.add(textHour);this.add(new JLabel("时"));this.add(textMinute);this.add(new JLabel("分"));this.add(textSecond);this.add(new JLabel("秒"));this.setSize(300, 80);this.setLocationRelativeTo(frame);this.setVisible(true);}public int getHour() {return Integer.parseInt(textHour.getText());}public int getMinute() {return Integer.parseInt(textMinute.getText());}public int getSecond() {return Integer.parseInt(textSecond.getText());}}//Dilog内部类//自己的测试public static void main(String[] args) {new CloseComputer();}}
- java 实现关机工具,托盘图标
- Java界面托盘图标实现
- 如何实现托盘图标
- Air实现托盘图标
- C#实现托盘图标
- mfc实现托盘图标
- C#实现托盘图标
- java托盘图标
- C#实现托盘图标动画
- java关机工具类的实现
- MFC下托盘图标的实现和托盘菜单
- MFC下托盘图标的实现和托盘菜单
- Java程序添加托盘图标和托盘弹出菜单
- JAVA添加托盘图标和托盘弹出式菜单
- Winform窗体实现最小化托盘图标
- C#实现闪动托盘图标示例
- C#实现闪动托盘图标示例
- C#实现闪动托盘图标示例
- shell [ printf / set / shift 用法初见]
- 利用ODBC连接数据库
- ORACLE学习笔记(一)——数据库启动(nomount)
- 润乾报表连接mysql数据源别名问题
- c# wince 文本操作
- java 实现关机工具,托盘图标
- stosb指令解析
- 产后复原:预防胸/部下垂
- 高德地图-绘制个人历史位置路线
- 初步认识asp.net中导入excell
- loadsb指令解析
- checkstyle插件问题总结
- 导入项目出现Project has no default.properties file错误总结
- Struts2框架验证--短路较验(short-circuit)