Adicionando ícones ao System Tray

Aprenda a adicionar ícones ao System Tray e utilize isto em sua aplicação.

Adicionando ícones ao System Tray

O system tray é situada no Windows Taskbar, geralmente no canto direito inferior ao lado do relógio. Ela contém ícones diminutos para o acesso fácil às funções do sistema tais como ajustes do antivírus, impressora, modem, o volume sadio, o status da bateria, e o mais. O Duplo-clique ou o clique com botão direito no ícone permitem a visualização e o acesso aos detalhes e aos controles da aplicação que estiver neste local. O system tray foi introduzida primeiramente com Microsoft Windows 95, e é usada agora no Windows 98, 98SE, NT 4.0, 2000, e XP. A Figura 1 mostra exatamente os tray icons no sistema operacional Windows XP.

O Java 1.5 não tem uma api permitindo que você adicione ícones ao system tray, logo, você necessita usar uma biblioteca que use JNI (Java Native Interface) habilitada a implementar esta funcionalidade.

JDIC (JDesktop Integration Components) (https://jdic.dev.java.net/) permite a criação de tray icon no desktop (no System Tray do sistema para plataformas de Windows, ou na área da notificação para plataformas do Unix), com um subtítulo (text), um ícone animado, e um menu que contem ícones. Pode também apresentar um tooltip quando o mouse fica parado sobre o ícone da bandeja.


Figura 1: Tray icons

O exemplo abaixo mostra como implementer algumas funcionalidades. Você pode aprender mais sobre isso na documentação do JDIC.

<B><SPAN >import </SPAN></B><SPAN >java.awt.event.*;</SPAN>
<B><SPAN >import </SPAN></B><SPAN >javax.swing.*;</SPAN>
<B><SPAN >import </SPAN></B><SPAN >org.jdesktop.jdic.tray.*;</SPAN>

<B><SPAN >public class </SPAN></B><SPAN >TestTray {</SPAN>
<B><SPAN >public static </SPAN></B><SPAN >JMenuItem quit;</SPAN>

<B><SPAN >public </SPAN></B><SPAN >TestTray() {</SPAN>
<SPAN >JPopupMenu menu = </SPAN><B><SPAN >new </SPAN></B><SPAN >JPopupMenu(</SPAN><SPAN >"Tray Icon Menu"</SPAN><SPAN >);</SPAN>
<SPAN >menu.add(</SPAN><B><SPAN >new </SPAN></B><SPAN >JMenuItem(</SPAN><SPAN >"Test Item"</SPAN><SPAN >));</SPAN>
<SPAN >menu.addSeparator();</SPAN>
<SPAN >JMenuItem quitItem = </SPAN><B><SPAN >new </SPAN></B><SPAN >JMenuItem(</SPAN><SPAN >"Quit"</SPAN><SPAN >);</SPAN>
<SPAN >quitItem.addActionListener(</SPAN><B><SPAN >new </SPAN></B><SPAN >ActionListener() {</SPAN>
<B><SPAN >public void </SPAN></B><SPAN >actionPerformed(ActionEvent evt) {</SPAN>
<SPAN >System.exit(</SPAN><SPAN >0</SPAN><SPAN >);</SPAN>
<SPAN >}});</SPAN>
<SPAN >menu.add(quitItem);</SPAN>

<SPAN >// O arquivo “devmedia.gif” deve existir no mesmo diretório</SPAN>

<SPAN ><SPAN > </SPAN><SPAN >  </SPAN>// onde estiver esta classe.</SPAN>
<SPAN lang=EN-US >ImageIcon icon = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >ImageIcon(</SPAN><SPAN lang=EN-US >"duke.gif"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >TrayIcon ti = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >TrayIcon(icon, </SPAN><SPAN lang=EN-US >"JDIC Tray Icon API Test"</SPAN><SPAN lang=EN-US >, menu);</SPAN>

<SPAN lang=EN-US >// Ação para clique com botão esquerdo.</SPAN>
<SPAN lang=EN-US >ti.addActionListener(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >ActionListener() {</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >actionPerformed(ActionEvent e) {</SPAN>
<SPAN lang=EN-US >JOptionPane.showMessageDialog(null, </SPAN>
<SPAN lang=EN-US >"JDIC Tray Icon API Test!"</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >"About"</SPAN><SPAN lang=EN-US >,</SPAN>
<SPAN lang=EN-US >JOptionPane.INFORMATION_MESSAGE);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >});</SPAN>

<SPAN lang=EN-US >SystemTray tray = SystemTray.getDefaultSystemTray();</SPAN>
<SPAN lang=EN-US >tray.addTrayIcon(ti);</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public static void </SPAN></B><SPAN lang=EN-US >main(String[] args) {</SPAN>
<B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >TestTray();</SPAN>
<SPAN lang=EN-US >}   </SPAN>
<SPAN lang=EN-US >}</SPAN>

Artigos relacionados