java swing程序最小化到托盘区
很多桌面程序需要长时间运行,我们不想一直占用宝贵的任务栏,这时我们需要最小化时把程序放到托盘区,以下就是java中swing程序最小化到托盘区的例子,注释很详细:
package com.wasw100;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
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 javax.swing.JFrame;
import javax.swing.JLabel;
public class TrayTest extends JFrame{
private JLabel lbHello = new JLabel("Hello World");
private Image icon;// 托盘图标
private TrayIcon trayIcon;
private SystemTray systemTray;// 系统托盘
private PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单
private MenuItem exit = new MenuItem("退出程序");
private MenuItem show = new MenuItem("显示窗口");
public TrayTest(){
//托盘图标部分结束
// icon初始化
icon = Toolkit.getDefaultToolkit().getImage(
this.getClass().getResource("icon.gif"));//托盘图标显示的图片
if (SystemTray.isSupported()) {
systemTray = SystemTray.getSystemTray();// 获得系统托盘的实例
trayIcon = new TrayIcon(icon, "鼠标放到托盘图标上的文字", pop);
// wasw100
pop.add(show);
pop.add(exit);
try {
systemTray.add(trayIcon); // 设置托盘的图标
} catch (AWTException e1) {
e1.printStackTrace();
}
addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent e) {
dispose();// 窗口最小化时dispose该窗口
}
});
trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1
&& e.getButton() != MouseEvent.BUTTON3) {// 左击击托盘窗口再现,如果是双击就是e.getClickCount() == 2
setVisible(true);
setExtendedState(JFrame.NORMAL);//设置此 frame 的状态。
}
}
});
show.addActionListener(new ActionListener() { // 点击"显示窗口"菜单后将窗口显示出来
public void actionPerformed(ActionEvent e) {
// systemTray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
setVisible(true); // 显示窗口
setExtendedState(JFrame.NORMAL);
}
});
exit.addActionListener(new ActionListener() { // 点击“退出演示”菜单后推出程序
public void actionPerformed(ActionEvent e) {
//这里可以写执行退出时执行的操作
System.exit(0); // 退出程序
}
});
}// 托盘图标部分结束
//以下是swing程序
setIconImage(icon);//更改程序图标
add(lbHello);
setTitle("hello");
setSize(200, 150);
//自动确定窗口位置
setLocationByPlatform(true);
//点击关闭按钮能够自动退出
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new TrayTest();
}
}
–EOF–