📄 trayiconutil.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.io.*;
/**
* <p>Title: TrayIcon</p>
* <p>Description: TrayIconUtil</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
* @version 1.0
*/
public class TrayIconUtil{
private JPopupMenu rightPopup;
private JWindow popupWindow;
private JFrame mainFrame;
private static TrayIconUtil staticInstance;
private TrayIconUtil(){}
public static TrayIconUtil getDefaultTrayIconUtil(){
if(staticInstance == null){
staticInstance = new TrayIconUtil();
staticInstance.initTrayIcon(staticInstance,"JavaTrayIconApp",1000);
}
return staticInstance;
}
private void setMainJFrame(final JFrame frame){
this.mainFrame=frame;
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
closeTrayIcon();
}
public void windowIconified(WindowEvent e) {
frame.setVisible(false);
}
public void windowDeactivated(WindowEvent e) {
if(rightPopup!=null)
rightPopup.setVisible(false);
}
});
}
public void setTrayIconJPopupMenu(JPopupMenu popup){
this.rightPopup=popup;
rightPopup.show(getPopupWindow(),0,0);
rightPopup.setVisible(false);
}
private void processTrayIconMouseEvent(int button,int x,int y){
if(button == -1)return;//mouse over.
if(button == 0 ||button ==5 ||button == 7){
if(rightPopup != null && button == 5){
rightPopup.show(getPopupWindow(),x,y);
rightPopup.requestFocus();
rightPopup.repaint();
}
}else{
if(button == 3){
if(rightPopup!=null)
rightPopup.setVisible(false);
if(!mainFrame.isVisible()){
mainFrame.setVisible(true);
mainFrame.toFront();
mainFrame.requestFocus();
if(mainFrame.isVisible()){
if(mainFrame.getExtendedState()==JFrame.ICONIFIED){
mainFrame.setExtendedState(JFrame.NORMAL);
}
}
}else{
mainFrame.setVisible(false);
}
}
}
}
private Window getPopupWindow(){
if(popupWindow == null){
popupWindow = new JWindow();
popupWindow.setBounds(0,0,1,1);
popupWindow.show();
}
return popupWindow;
}
private boolean isFirst=true;
public void initTrayIcon(String tip,File iconfile,JFrame frame,JPopupMenu popup){
if(isFirst){
if(iconfile!=null){
ImageIcon icon=new ImageIcon(iconfile.getAbsolutePath());
int w=icon.getIconWidth(),h=icon.getIconHeight();
Image image=icon.getImage();
try {
int[] pixels = new int[w * h];
PixelGrabber pg = new PixelGrabber(image, 0, 0, w, h, pixels, 0, w);
pg.grabPixels();
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
throw new Exception("Error loading icon image");
}
setTrayIconData(w, h, pixels);
} catch (Exception ex) {
ex.printStackTrace();
}
}
if(tip!=null){
setTrayIconTip(tip);
}
setTrayIconJPopupMenu(popup);
setMainJFrame(frame);
isFirst=false;
}
}
private native void initTrayIcon(TrayIconUtil instance,String appName,int id);
private native void setTrayIconTip(String tip);
private native void setTrayIconData(int w, int h, int pixels[]);
public native void showTrayIcon();
public native void closeTrayIcon();
static{
System.loadLibrary("TrayIcon");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -