使用Java實現(xiàn)系統(tǒng)托盤功能的介紹(附源碼以及截圖)
Java中如何,實現(xiàn)系統(tǒng)托盤功能.
示例圖
項目包結(jié)構(gòu)圖
系統(tǒng)運行截圖
應(yīng)用核心邏輯說明,隱藏到托盤實質(zhì)就是講窗體隱藏.即setVisible(false),顯示窗體即就是講setVisible(true).
項目代碼如下:
package org.pdp.frame;
import java.awt.AWTException;
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.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MainFrame extends JFrame implements ActionListener{
private static final long serialVersionUID = -7078030311369039390L;
private JMenu menu;
private JMenuBar jmenuBar;
private String [] jmItemName = {"置于托盤","系統(tǒng)退出"};
public MainFrame(){
super("電話薄");
init();
this.setSize(500,400);
this.setJMenuBar(jmenuBar);
this.setLocationRelativeTo(null);
systemTray(); //系統(tǒng)托盤
}
/**
* 初始化界面
*/
public void init(){
menu = new JMenu("系統(tǒng)窗體");
for(int i=0; i<jmItemName.length; i++){
JMenuItem menuItem = new JMenuItem(jmItemName[i]);
menuItem.addActionListener(this);
menu.add(menuItem);
}
this.jmenuBar = new JMenuBar();
this.jmenuBar.add(menu);
}
@Override
public void actionPerformed(ActionEvent e) {
String actions = e.getActionCommand();
if("置于托盤".equals(actions)){
this.setVisible(false);
}
if("系統(tǒng)退出".equals(actions)){
System.exit(0);
}
}
/**系統(tǒng)托盤圖標(biāo)處理.*/
private void systemTray(){
if(SystemTray.isSupported()){ //判斷系統(tǒng)是否支持托盤功能.
URL resource = this.getClass().getResource("systray.jpg"); //獲得圖片路徑
ImageIcon icon = new ImageIcon(resource); //創(chuàng)建圖片對象
PopupMenu popupMenu = new PopupMenu(); //創(chuàng)建彈出菜單對象
MenuItem itemExit = new MenuItem("退出系統(tǒng)"); //創(chuàng)建彈出菜單中的退出項
MenuItem itemShow = new MenuItem("顯示窗體"); //創(chuàng)建彈出菜單中的顯示主窗體項.
itemExit.addActionListener(new ActionListener() { //給退出像添加事件監(jiān)聽
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
itemShow.addActionListener(new ActionListener() { //給窗體最小化添加事件監(jiān)聽.
@Override
public void actionPerformed(ActionEvent e) {
setVisible(true);
}
});
popupMenu.add(itemExit);
popupMenu.add(itemShow);
TrayIcon trayIcon = new TrayIcon(icon.getImage(),"電話薄系統(tǒng)",popupMenu);
SystemTray sysTray = SystemTray.getSystemTray();
try {
sysTray.add(trayIcon);
} catch (AWTException e1) { }
}
}
/**
* 主方法
* @param args
*/
public static void main(String[] args) {
new MainFrame().setVisible(true);
}
}
相關(guān)文章
java多線程返回值使用示例(callable與futuretask)
這篇文章主要介紹了多線程返回值使用示例(callable與futuretask),需要的朋友可以參考下2014-04-04springmvc學(xué)習(xí)筆記-返回json的日期格式問題的解決方法
本篇文章主要介紹了springmvc學(xué)習(xí)筆記-返回json的日期格式問題的解決方法,解決了日期格式的輸出,有興趣的可以了解一下。2017-01-01解決Spring Security的權(quán)限配置不生效問題
這篇文章主要介紹了解決Spring Security的權(quán)限配置不生效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03java ThreadPoolExecutor線程池拒絕策略避坑
這篇文章主要為大家介紹了java ThreadPoolExecutor拒絕策略避坑踩坑示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07springboot實現(xiàn)防重復(fù)提交和防重復(fù)點擊的示例
這篇文章主要介紹了springboot實現(xiàn)防重復(fù)提交和防重復(fù)點擊的示例,幫助大家更好的理解和學(xué)習(xí)springboot框架,感興趣的朋友可以了解下2020-09-09使用nexus3.X上傳本地jar包并且通過pom讀取的解決方案(全網(wǎng)最新)
這篇文章主要介紹了使用nexus3.X上傳本地jar包并且通過pom讀取的解決方案(全網(wǎng)最新),本文內(nèi)容有點長,結(jié)合圖文實例給大家講解的非常詳細,需要的朋友可以參考下2023-11-11