可以在jframe的构造方法中加入如下方法:
//新建系统托盘
private void createSystemTray() {
try {
// 判断当前平台是否支持系统托盘
if (SystemTray.isSupported()) {
// 获得系统托盘
SystemTray st = SystemTray.getSystemTray();
// 新建一个系统托盘按钮并制定图片
Image image = Toolkit.getDefaultToolkit().getImage(systemTrayPicPath);// 定义托盘图标的图片
TrayIcon ti = new TrayIcon(image);
// 定义这个新建的托盘按钮
ti.setToolTip(TtConfig.msg.getProperty("title.system.tray"));
ti.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1)// 鼠标左键单击,打开窗体
Main.getInstance().setVisible(!Main.getInstance().isVisible());
Main.getInstance().setExtendedState(JFrame.NORMAL);
}
});
PopupMenu p = new PopupMenu("OK");
MenuItem m1 = new MenuItem(TtConfig.msg.getProperty("menu.tray.open"));
m1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Main.getInstance().setVisible(true);
Main.getInstance().setExtendedState(JFrame.NORMAL);
}
});
p.add(m1);
p.addSeparator();
MenuItem m = new MenuItem(TtConfig.msg.getProperty("menu.tray.close"));
m.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
p.add(m);
ti.setPopupMenu(p); // 为托盘添加右键菜单
// 将定义好的托盘按钮绑定到系统图盘上
st.add(ti);
}
} catch (Exception e) {
e.printStackTrace();
}
}
效果如下:
第一个小图标即是我的swing程序在系统托盘中的图标