Here is an example of a class to display tryIcon:
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.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author Jonathan CR
*/
public class IconSys {
public static void main(String[] args) {
final TrayIcon trayIcon; // declarando uma constante do tipo TrayIcon
frmMenu menu = new frmMenu();
// Aqui vamos testar se o recurso é suportado
if (SystemTray.isSupported()) {
//declarando uma variavel do tipo SystemTray
SystemTray tray = SystemTray.getSystemTray();
//declarando uma variavel do tipo Image que contera a imagem tray.gif
Image image = Toolkit.getDefaultToolkit().getImage("src\\personal.png");
//Criamos um listener para escutar os eventos de mouse
MouseListener mouseListener = new MouseListener() {
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
};
// Criamos um ActionListener para a ação de encerramento do programa.
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
};
// Criamos um ActionListener para a exibir uma mensagem na tela ao clicarmos
//em um item do menu.
ActionListener mostramsglistener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Meus Programas JCR.", "JCR", JOptionPane.INFORMATION_MESSAGE);
}
};
ActionListener prog1listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String caminho = menu.prog1;
Runtime.getRuntime().exec("cmd.exe /c start " + caminho);
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Caminho do aplicativo não encontrado!");
Logger.getLogger(IconSys.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
ActionListener prog2listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String caminho = menu.prog2;
Runtime.getRuntime().exec("cmd.exe /c start " + caminho);
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Caminho do aplicativo não encontrado!");
Logger.getLogger(IconSys.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
ActionListener gadgedlisner = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
frmGadget frmGad = new frmGadget();
frmGad.setVisible(true);
} catch (Exception e) {
}
}
};
//Criando um objeto PopupMenu
PopupMenu popup = new PopupMenu("Menu de Opções");
//criando itens do menu
MenuItem mostramsg = new MenuItem("Exibir Informação");
MenuItem prog1 = new MenuItem("Controle de Estoque");
MenuItem prog2 = new MenuItem("Controle de Despesas");
MenuItem gad = new MenuItem("Gadget");
MenuItem defaultItem = new MenuItem("Sair");
//na linha a seguir associamos os objetos aos eventos
mostramsg.addActionListener(mostramsglistener);
prog1.addActionListener(prog1listener);
prog2.addActionListener(prog2listener);
gad.addActionListener(gadgedlisner);
defaultItem.addActionListener(exitListener);
popup.add(mostramsg);
popup.addSeparator();
popup.add(prog1);
//popup.addSeparator();
popup.add(prog2);
popup.addSeparator();
popup.add(gad);
popup.addSeparator();
popup.add(defaultItem);
trayIcon = new TrayIcon(image, "Programas Jonathan CR", popup);
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
//adicionar form aki
menu.setVisible(true);
//trayIcon.displayMessage("Action Event", "Um Evento foi disparado", TrayIcon.MessageType.INFO);
}
};
//Na linha a seguir a imagem a ser utilizada como icone sera redimensionada
trayIcon.setImageAutoSize(true);
//Seguida adicionamos os actions listeners
trayIcon.addActionListener(actionListener);
trayIcon.addMouseListener(mouseListener);
//Tratamento de erros
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println("Erro, TrayIcon não sera adicionado.");
}
} else {
//Caso o item System Tray não for suportado
JOptionPane.showMessageDialog(null, "recurso ainda não esta disponível pra o seu sistema");
}
}
}