Java/JDK 6/TrayIcon

Материал из Java эксперт
Перейти к: навигация, поиск

Add mouse listener to TrayIcon

   <source lang="java">
  

import java.awt.AWTException; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; 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.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; public class SystemTrayDemo2 {

 public static void main(String[] args) {
   if (!SystemTray.isSupported()) {
     return;
   }
   SystemTray tray = SystemTray.getSystemTray();
   Dimension size = tray.getTrayIconSize();
   BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
   Graphics g = bi.getGraphics();
   g.setColor(Color.blue);
   g.fillRect(0, 0, size.width, size.height);
   g.setColor(Color.yellow);
   int ovalSize = (size.width < size.height) ? size.width : size.height;
   ovalSize /= 2;
   g.fillOval(size.width / 4, size.height / 4, ovalSize, ovalSize);
   try {
     PopupMenu popup = new PopupMenu();
     MenuItem miExit = new MenuItem("Exit");
     ActionListener al;
     al = new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         System.out.println("Goodbye");
         System.exit(0);
       }
     };
     miExit.addActionListener(al);
     popup.add(miExit);
     TrayIcon ti = new TrayIcon(bi, "System Tray Demo #2", popup);
     al = new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         System.out.println(e.getActionCommand());
       }
     };
     ti.setActionCommand("My Icon");
     ti.addActionListener(al);
     MouseListener ml;
     ml = new MouseListener() {
       public void mouseClicked(MouseEvent e) {
         System.out.println("Tray icon: Mouse clicked");
       }
       public void mouseEntered(MouseEvent e) {
         System.out.println("Tray icon: Mouse entered");
       }
       public void mouseExited(MouseEvent e) {
         System.out.println("Tray icon: Mouse exited");
       }
       public void mousePressed(MouseEvent e) {
         System.out.println("Tray icon: Mouse pressed");
       }
       public void mouseReleased(MouseEvent e) {
         System.out.println("Tray icon: Mouse released");
       }
     };
     ti.addMouseListener(ml);
     MouseMotionListener mml;
     mml = new MouseMotionListener() {
       public void mouseDragged(MouseEvent e) {
         System.out.println("Tray icon: Mouse dragged");
       }
       public void mouseMoved(MouseEvent e) {
         System.out.println("Tray icon: Mouse moved");
       }
     };
     ti.addMouseMotionListener(mml);
     tray.add(ti);
   } catch (AWTException e) {
     System.out.println(e.getMessage());
     return;
   }
 }

}


 </source>
   
  
 
  



Add Mouse motion listener to TrayIcon

   <source lang="java">
  

import java.awt.AWTException; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; 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.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; public class SystemTrayDemo2 {

 public static void main(String[] args) {
   if (!SystemTray.isSupported()) {
     return;
   }
   SystemTray tray = SystemTray.getSystemTray();
   Dimension size = tray.getTrayIconSize();
   BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
   Graphics g = bi.getGraphics();
   g.setColor(Color.blue);
   g.fillRect(0, 0, size.width, size.height);
   g.setColor(Color.yellow);
   int ovalSize = (size.width < size.height) ? size.width : size.height;
   ovalSize /= 2;
   g.fillOval(size.width / 4, size.height / 4, ovalSize, ovalSize);
   try {
     PopupMenu popup = new PopupMenu();
     MenuItem miExit = new MenuItem("Exit");
     ActionListener al;
     al = new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         System.out.println("Goodbye");
         System.exit(0);
       }
     };
     miExit.addActionListener(al);
     popup.add(miExit);
     TrayIcon ti = new TrayIcon(bi, "System Tray Demo #2", popup);
     al = new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         System.out.println(e.getActionCommand());
       }
     };
     ti.setActionCommand("My Icon");
     ti.addActionListener(al);
     MouseListener ml;
     ml = new MouseListener() {
       public void mouseClicked(MouseEvent e) {
         System.out.println("Tray icon: Mouse clicked");
       }
       public void mouseEntered(MouseEvent e) {
         System.out.println("Tray icon: Mouse entered");
       }
       public void mouseExited(MouseEvent e) {
         System.out.println("Tray icon: Mouse exited");
       }
       public void mousePressed(MouseEvent e) {
         System.out.println("Tray icon: Mouse pressed");
       }
       public void mouseReleased(MouseEvent e) {
         System.out.println("Tray icon: Mouse released");
       }
     };
     ti.addMouseListener(ml);
     MouseMotionListener mml;
     mml = new MouseMotionListener() {
       public void mouseDragged(MouseEvent e) {
         System.out.println("Tray icon: Mouse dragged");
       }
       public void mouseMoved(MouseEvent e) {
         System.out.println("Tray icon: Mouse moved");
       }
     };
     ti.addMouseMotionListener(mml);
     tray.add(ti);
   } catch (AWTException e) {
     System.out.println(e.getMessage());
     return;
   }
 }

}


 </source>
   
  
 
  



Add PropertyChangeListener to TrayIcon

   <source lang="java">
  

import java.awt.AWTException; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; public class SystemTrayDemo1 {

 public static void main(String[] args) throws Exception {
   if (!SystemTray.isSupported()) {
     return;
   }
   SystemTray tray = SystemTray.getSystemTray();
   PropertyChangeListener pcl;
   pcl = new PropertyChangeListener() {
     public void propertyChange(PropertyChangeEvent pce) {
       System.out.println("Property changed = " + pce.getPropertyName());
       TrayIcon[] tia = (TrayIcon[]) pce.getOldValue();
       if (tia != null) {
         System.out.println("Old tray icon array contents: ");
         for (int i = 0; i < tia.length; i++)
           System.out.println(tia[i]);
         System.out.println();
       }
       tia = (TrayIcon[]) pce.getNewValue();
       if (tia != null) {
         System.out.println("New tray icon array contents: ");
         for (int i = 0; i < tia.length; i++)
           System.out.println(tia[i]);
         System.out.println();
       }
     }
   };
   tray.addPropertyChangeListener("trayIcons", pcl);
   Dimension size = tray.getTrayIconSize();
   BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
   Graphics g = bi.getGraphics();
   g.setColor(Color.blue);
   g.fillRect(0, 0, size.width, size.height);
   g.setColor(Color.yellow);
   int ovalSize = (size.width < size.height) ? size.width : size.height;
   ovalSize /= 2;
   g.fillOval(size.width / 4, size.height / 4, ovalSize, ovalSize);
   TrayIcon icon = null;
   tray.add(icon = new TrayIcon(bi));
   Thread.sleep(3000);
   tray.remove(icon);
   Thread.sleep(3000);
   System.exit(0);
 }

}


 </source>
   
  
 
  



Create Tray Icon

   <source lang="java">
  

import java.awt.AWTException; import java.awt.Image; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Test {

 static Image image = Toolkit.getDefaultToolkit().getImage("images/tray.gif");
 static TrayIcon trayIcon = new TrayIcon(image, "Tester2");
 public static void main(String[] a) throws Exception {
   if (SystemTray.isSupported()) {
     SystemTray tray = SystemTray.getSystemTray();
     trayIcon.setImageAutoSize(true);
     trayIcon.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         System.out.println("In here");
         trayIcon.displayMessage("Tester!", "Some action performed", TrayIcon.MessageType.INFO);
       }
     });
     try {
       tray.add(trayIcon);
     } catch (AWTException e) {
       System.err.println("TrayIcon could not be added.");
     }
   }
 }

}


 </source>
   
  
 
  



Demonstrating a System Tray That Responds to Selection

   <source lang="java">
  

import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; public class ActiveTray {

 public static void main(String args[]) throws Exception{
   if (SystemTray.isSupported() == false) {
     System.err.println("No system tray available");
     return;
   }
   final SystemTray tray = SystemTray.getSystemTray();
   PropertyChangeListener propListener = new PropertyChangeListener() {
     public void propertyChange(PropertyChangeEvent evt) {
       TrayIcon oldTray[] = (TrayIcon[]) evt.getOldValue();
       TrayIcon newTray[] = (TrayIcon[]) evt.getNewValue();
       System.out.println(oldTray.length + " / " + newTray.length);
     }
   };
   tray.addPropertyChangeListener("trayIcons", propListener);
   Image image = Toolkit.getDefaultToolkit().getImage("jpgIcon.jpg");
   PopupMenu popup = new PopupMenu();
   MenuItem item = new MenuItem("Hello, World");
   final TrayIcon trayIcon = new TrayIcon(image, "Tip Text", popup);
   ActionListener menuActionListener = new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       trayIcon.displayMessage("Good-bye", "Cruel World", TrayIcon.MessageType.WARNING);
     }
   };
   item.addActionListener(menuActionListener);
   popup.add(item);
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       tray.remove(trayIcon);
     }
   };
   trayIcon.addActionListener(actionListener);
   tray.add(trayIcon);
 }

}


 </source>
   
  
 
  



Have a systray icon (Windows)

   <source lang="java">
 

import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; public class Main {

 static TrayIcon trayIcon = null;
 public static void main(String[] args) throws Exception {
   SystemTray sysTray = SystemTray.getSystemTray();
   Image image = Toolkit.getDefaultToolkit().getImage("/a.jpg");
   ActionListener exitListener = new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       System.out.println("Bye from the tray");
       System.exit(0);
     }
   };
   ActionListener executeListener = new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       JOptionPane.showMessageDialog(null, "!", "User action",
           JOptionPane.INFORMATION_MESSAGE);
       trayIcon.displayMessage("Done", "!", TrayIcon.MessageType.INFO);
     }
   };
   PopupMenu menu = new PopupMenu();
   MenuItem execItem = new MenuItem("Action...");
   execItem.addActionListener(executeListener);
   menu.add(execItem);
   MenuItem exitItem = new MenuItem("Exit");
   exitItem.addActionListener(exitListener);
   menu.add(exitItem);
   trayIcon = new TrayIcon(image, "Java System Tray Demo", menu);
   trayIcon.setImageAutoSize(true);
   sysTray.add(trayIcon);
   trayIcon.displayMessage("Ready", "started", TrayIcon.MessageType.INFO);
 }

}


 </source>
   
  
 
  



Remove Icon from TrayIcon

   <source lang="java">
  

import java.awt.AWTException; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; public class SystemTrayDemo1 {

 public static void main(String[] args) throws Exception {
   if (!SystemTray.isSupported()) {
     return;
   }
   SystemTray tray = SystemTray.getSystemTray();
   PropertyChangeListener pcl;
   pcl = new PropertyChangeListener() {
     public void propertyChange(PropertyChangeEvent pce) {
       System.out.println("Property changed = " + pce.getPropertyName());
       TrayIcon[] tia = (TrayIcon[]) pce.getOldValue();
       if (tia != null) {
         System.out.println("Old tray icon array contents: ");
         for (int i = 0; i < tia.length; i++)
           System.out.println(tia[i]);
         System.out.println();
       }
       tia = (TrayIcon[]) pce.getNewValue();
       if (tia != null) {
         System.out.println("New tray icon array contents: ");
         for (int i = 0; i < tia.length; i++)
           System.out.println(tia[i]);
         System.out.println();
       }
     }
   };
   tray.addPropertyChangeListener("trayIcons", pcl);
   Dimension size = tray.getTrayIconSize();
   BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
   Graphics g = bi.getGraphics();
   g.setColor(Color.blue);
   g.fillRect(0, 0, size.width, size.height);
   g.setColor(Color.yellow);
   int ovalSize = (size.width < size.height) ? size.width : size.height;
   ovalSize /= 2;
   g.fillOval(size.width / 4, size.height / 4, ovalSize, ovalSize);
   TrayIcon icon = null;
   tray.add(icon = new TrayIcon(bi));
   Thread.sleep(3000);
   tray.remove(icon);
   Thread.sleep(3000);
   System.exit(0);
 }

}


 </source>
   
  
 
  



System tray icon

   <source lang="java">
 

import java.awt.HeadlessException; import java.awt.Image; import java.awt.MenuItem; import java.awt.Panel; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import javax.swing.Icon; import javax.swing.JOptionPane; import javax.swing.plaf.metal.MetalIconFactory; public class SysTray {

 public static void main(String[] args) throws Exception {
   new SysTray().installSystemTray();
 }
 public void installSystemTray() throws Exception {
   PopupMenu menu = new PopupMenu();
   MenuItem exit = new MenuItem("Exit");
   exit.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       System.exit(0);
     }
   });
   menu.add(exit);
   
   TrayIcon icon = new TrayIcon(getImage(), "Java application as a tray icon", menu);
   icon.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       JOptionPane.showMessageDialog(null, "Hi!");
     }
   });
   SystemTray.getSystemTray().add(icon);
   Thread.sleep(3000);
   icon.displayMessage("Attention", "Please click here", TrayIcon.MessageType.WARNING);
 }
 private Image getImage() throws HeadlessException {
   Icon defaultIcon = MetalIconFactory.getTreeHardDriveIcon();
   Image img = new BufferedImage(defaultIcon.getIconWidth(), defaultIcon.getIconHeight(),
       BufferedImage.TYPE_4BYTE_ABGR);
   defaultIcon.paintIcon(new Panel(), img.getGraphics(), 0, 0);
   return img;
 }

}


 </source>
   
  
 
  



Using system tray

   <source lang="java">
  

import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; public class SystemTrayDemo {

 public static void main(String[] args)throws Exception {
   if (!SystemTray.isSupported()) {
     System.out.println("SystemTray is not supported");
     return;
   }
   SystemTray tray = SystemTray.getSystemTray();
   Toolkit toolkit = Toolkit.getDefaultToolkit();
   Image image = toolkit.getImage("trayIcon.jpg");
   PopupMenu menu = new PopupMenu();
   MenuItem messageItem = new MenuItem("Show Message");
   messageItem.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       JOptionPane.showMessageDialog(null, "www.jexp.ru");
     }
   });
   menu.add(messageItem);
   MenuItem closeItem = new MenuItem("Close");
   closeItem.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       System.exit(0);
     }
   });
   menu.add(closeItem);
   TrayIcon icon = new TrayIcon(image, "SystemTray Demo", menu);
   icon.setImageAutoSize(true);
   tray.add(icon);
 }

}


 </source>