基于java开发之系统托盘的应用
时间:2022-02-21 10:57:00|栏目:JAVA代码|点击: 次
项目结构:

运行效果:


========================================================================
下面是代码部分:
========================================================================
/tray/src/com/b510/tray托盘/DesktopCapture.java
复制代码 代码如下:
package com.b510.tray托盘;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
public class DesktopCapture extends JFrame implements ActionListener {
/**
* 1.改变双击托盘截图为单击托盘截图 2.修复了托盘后无反应BUG 3.将放大镜提示框移至左上角和右上角
*/
private static final long serialVersionUID = 1L;
// JButton confirm;
// BufferedImage desktopImg;
MyTray tray;
boolean iconed = false;
public DesktopCapture() {
super("EasyCapture");
init();
// 当点击"-"最小化按钮时,系统会最小化到托盘
addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent e) {
iconed = true;
setVisible(false);
}
// 当点击"X"关闭窗口按钮时,会询问用户是否要最小化到托盘
// 是,表示最小化到托盘,否,表示退出
public void windowClosing(WindowEvent e) {
int option = JOptionPane.showConfirmDialog(DesktopCapture.this,
"是否最小化到托盘?", "提示:", JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
iconed = true;
setVisible(false);
} else {
System.exit(0);
}
}
});
pack();
setSize(350, 230);
setLocation(500, 300);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
void init() {
tray = new MyTray(DesktopCapture.this);
}
// 截图
public void capture() {
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
DesktopCapture desk = new DesktopCapture();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
/tray/src/com/b510/tray托盘/MyTray.java
复制代码 代码如下:
package com.b510.tray托盘;
import java.awt.AWTException;
import java.awt.Image;
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.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class MyTray implements ActionListener, MouseListener {
private Image icon;// 图标
private TrayIcon trayIcon;
private SystemTray systemTray;// 系统托盘
private DesktopCapture frame; // 托盘所属主窗体
private PopupMenu pop = new PopupMenu(); // 弹出菜单
private MenuItem capture = new MenuItem("capture");
private MenuItem show = new MenuItem("open");
private MenuItem exit = new MenuItem("exit");
public MyTray(DesktopCapture frame) {
this.frame = frame;
// icon = Toolkit.getDefaultToolkit().getImage("./images/xiaomai.png");
icon = new ImageIcon(this.getClass().getClassLoader().getResource(
"image/xiaomai.png")).getImage();
if (SystemTray.isSupported()) {
systemTray = SystemTray.getSystemTray();
trayIcon = new TrayIcon(icon, "单击直接截图-EasyCapture", pop);
pop.add(capture);
pop.add(show);
pop.add(exit);
try {
systemTray.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
trayIcon.addMouseListener(this);
}
}
trayIcon.addMouseListener(this);
show.addActionListener(this);
exit.addActionListener(this);
capture.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == show) {
frame.iconed = false;
frame.setVisible(true);
frame.setExtendedState(JFrame.NORMAL);
} else if (e.getSource() == capture) {
frame.capture();
} else {
System.exit(0);
}
}
// ����¼�
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1 && e.getButton() != MouseEvent.BUTTON3) {
frame.capture();
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
栏 目:JAVA代码
下一篇:详解自定义SpringMVC的Http信息转换器的使用
本文标题:基于java开发之系统托盘的应用
本文地址:http://www.codeinn.net/misctech/194060.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




