桌面的系统托盘即当程序最小化时并没有退出,而是最小化在任务状态区域。当鼠标点击那个区域所在的图标会有提示以及弹出菜单等。
下面使用Java中的SystemTray和TrayIcon类实现系统栏托盘:
public class CPSystemTray {
JFrame parent;//主窗口
CPSystemTray(){
this.parent = null;
}
CPSystemTray(JFrame parent){
this.parent = parent;
}
public void systemTrayInit(){
// 判断当前系统是否支持系统栏图标
if (!SystemTray.isSupported()) {
return;
}
try {
String title = "ControlParamApp";
String author = "CS.FJC";
SystemTray sysTray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage(
CPSystemTray.class.getResource("../icons/sysTray.png"));
// 设置系统栏图标及弹出菜单
TrayIcon trayIcon = new TrayIcon(image, title + "\n" + author, createSysTrayMenu());
trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(new SysTrayActionListener());
sysTray.add(trayIcon);
trayIcon.displayMessage(title, author, MessageType.INFO);
} catch (Exception e) {
e.printStackTrace();
}
}
private PopupMenu createSysTrayMenu() {
PopupMenu sysTrayMenu = new PopupMenu();
MenuItem exitItem = new MenuItem("Exit");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
MenuItem openItem = new MenuItem("Open");
openItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
sysTrayMenu.add(openItem);
sysTrayMenu.addSeparator();
sysTrayMenu.add(exitItem);
return sysTrayMenu;
}
class SysTrayActionListener implements ActionListener {
//系统栏图标双击事件
public void actionPerformed(ActionEvent e) {
if(parent!=null){
parent.setVisible(true);
parent.toFront();
}
}
}
}
效果: