右键弹出菜单+最小化按钮到系统托盘+提示信息

/**
 * 右键弹出菜单+系统托盘+提示信息
 */
package test1;


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class JFrameHide extends JFrame implements Runnable,MouseListener{
private int xx;//窗口左上角x坐标
private int yy;//窗口左上角y坐标
private int cdheight=300;//窗口的高
private int cdwidth=400;//窗口的宽
private int hidepeer=10;//窗口隐藏的速度,单位为像素
//Thread hidethread;//窗口的隐藏或显示线程
PopupMenu cdpop1,cdpop2;//弹出菜单
MenuItem cdmenu1,cdmenu2,cdmenu3,cdmenu4,cdmenu5;//弹出菜单项
SystemTray cdtray=null;//托盘实例
TrayIcon cdicon=null;//托盘图标
ImageIcon cdimage;//图片
 public JFrameHide(){
 super("类似于迅雷的浮动小小提示窗口");
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setSize(cdwidth,cdheight);
 this.setBackground(Color.black);
 cdimage=new ImageIcon("images/icon_share_buddy.png");
   
 cdpop1=new PopupMenu();
 cdmenu1=new MenuItem("关于");
 cdmenu2=new MenuItem("退出");
 cdmenu3=new MenuItem("最小化");
 cdmenu4=new MenuItem("最小化并放到托盘");
 cdmenu5=new MenuItem("还原");
 //弹出菜单
 cdpop2=new PopupMenu();
 //TrayIcon 对象表示可以添加到系统托盘的托盘图标
 cdicon=new TrayIcon(cdimage.getImage(),"LCD的窗口隐藏测试",cdpop2);
 
 


 cdmenu1.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   JOptionPane.showMessageDialog(null,"我用来测试隐藏功能的");
  }
 });
 cdmenu2.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   System.exit(0);//退出系统
  }
 });
 cdmenu3.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   setState(Frame.ICONIFIED);//设置状态为最小化
  }
 });
 cdmenu4.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
  //最小化并添加到系统托盘
if(SystemTray.isSupported()){// 返回当前平台是否支持系统托盘
   //获取表示桌面托盘区的 SystemTray 实例
    cdtray=SystemTray.getSystemTray();
    try{
     cdtray.add(cdicon);//添加托盘小图标
     dispose();//隐藏当前窗体
    }
    catch(AWTException ex){
     JOptionPane.showMessageDialog(null,"当前系统不支持系统托盘实例!出错信息:"+ex.toString());
    }
    cdicon.addMouseListener(new MouseListener(){
     public void mouseClicked(MouseEvent e){
     //判断用户是否点击了鼠标右键
      if((e.getModifiers()&InputEvent.BUTTON3_MASK)!=0){
       cdpop2.add(cdmenu1);
       cdpop2.add(cdmenu5);
       cdpop2.add(cdmenu2);
       cdpop2.show(null,e.getX(),e.getY());
      }
     }
     public void mouseExited(MouseEvent e){}
     public void mousePressed(MouseEvent e){}
     public void mouseEntered(MouseEvent e){}
     public void mouseReleased(MouseEvent e){}
    });
    dispose();
   }
  }
 });
 cdmenu5.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   setVisible(true);
   cdtray.remove(cdicon);//从 SystemTray 中移除指定的 TrayIcon。
  }
 });
 cdpop1.add(cdmenu3);
 cdpop1.add(cdmenu4);
 cdpop1.add(cdmenu1);
 cdpop1.add(cdmenu2);  
 add(cdpop1);
 
 
 addMouseListener(this);
 //设置窗口相对于指定组件的位置
 setLocationRelativeTo(null);
 setUndecorated(true);
 setVisible(true);


  
}
public void mouseExited(MouseEvent e){}
public void mouseReleased(MouseEvent e){
 setVisible(false);
 setLocation((int)(e.getX()-xx+getLocation().getX()),(int)(e.getY()-yy+getLocation().getY()));
 setVisible(true);
}
public void mouseEntered(MouseEvent e){}
public void mouseClicked(MouseEvent e){
 
}
public void mousePressed(MouseEvent e){
 xx=e.getX();
 yy=e.getY();
 if((e.getModifiers()&InputEvent.BUTTON3_MASK)!=0){
  cdpop1.show(this,e.getX(),e.getY()); //在指定位置显示右键弹出菜单
 }
}
 
public static void main(String []args){
new JFrameHide();
}
public void run(){
 //暂时还没有实现在窗口旁边的时候自动隐藏的功能
}
}

你可能感兴趣的:(右键弹出菜单+最小化按钮到系统托盘+提示信息)