Alguém pode me dar algumas instruções de como coloco o meu sistema, carregar, quando o computador é utilizado, ao lado do relógio do windows, no Systray e ficar executando em segundo plano?
Consegui alguns exemplos aqui na busca do fórum mas estou encontrando dificuldades.
importjava.awt.event.*;importjavax.swing.*;importorg.jdesktop.jdic.tray.*;publicclassTestTray{publicstaticJMenuItemquit;publicTestTray(){JPopupMenumenu=newJPopupMenu("Tray Icon Menu");menu.add(newJMenuItem("Test Item"));menu.addSeparator();JMenuItemquitItem=newJMenuItem("Quit");quitItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){System.exit(0);}});menu.add(quitItem);// O arquivo ?devmedia.gif? deve existir no mesmo diretório// onde estiver esta classe.ImageIconicon=newImageIcon("duke.gif");TrayIconti=newTrayIcon(icon,"JDIC Tray Icon API Test",menu);// Ação para clique com botão esquerdo.ti.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JOptionPane.showMessageDialog(null,"JDIC Tray Icon API Test!","About",JOptionPane.INFORMATION_MESSAGE);}});SystemTraytray=SystemTray.getDefaultSystemTray();tray.addTrayIcon(ti);}publicstaticvoidmain(String[]args){newTestTray();}}
F
fernandoeick
Já testei este exemplo.
Fiz assim, baixei o arquivo jdic-20060613-bin-cross-platform e adicionei o jdic.jar no meu projeto. Ao rodar dá este erro:
Exception in thread "main" java.lang.IllegalArgumentException: Width (-1) and height (-1) cannot be <= 0
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:999)
at java.awt.image.BufferedImage.<init>(BufferedImage.java:321)
at org.jdesktop.jdic.tray.internal.impl.WinTrayIconService.updateIcon(Unknown Source)
at org.jdesktop.jdic.tray.internal.impl.WinTrayIconService.addNotify(Unknown Source)
at org.jdesktop.jdic.tray.internal.impl.WinSystemTrayService.addTrayIcon(Unknown Source)
at org.jdesktop.jdic.tray.SystemTray.addTrayIcon(Unknown Source)
at Sistray.<init>(Sistray.java:33)
at Sistray.main(Sistray.java:37)
O que será que é?
E Bruno, somente com esta classe minha aplicação já vai ficar rodando lá no barra perto do relógio, porque em nenhum momento indiquei nenhuma classe dizendo o que eu queria que rodasse lá.
Agradeço.
B
brunolinsalves
Bom dia fernandoeick,
Eu nunca usei o SystemTray … por isso não posso afirmar com certeza, porém eu acho que no main da sua aplicação você deverá inserir a seguinte linha:
Qual a versão do java que você está usando ?
parece que o SystemTray só funciona a partir da 6 …
da uma atualizada na versão do java… e fala se deu certo …
Espero ter ajudado…
Flw
F
fernandoeick
Certo Bruno.
Rodou, com as suas dicas. Porém, não acontece o que deveria. A aplicação roda, mas o tal do ícone não aparece lá.
Eu criei um projeto separado, que roda somente esta classe. Devo fazer isto de maneira diferente?
Agradeço!
B
brunolinsalves
// O arquivo ?devmedia.gif? deve existir no mesmo diretório
ImageIcon icon = new ImageIcon("duke.gif");
a String com o endereço da imagem está com o caminho correto ?
pode ser por isso que o ícone não está aparecendo …
Vê se é isso …
F
fernandoeick
Não era isso não. A imagem está correta.
Mas como eu faço para esta classe carregar o que eu realmente quero, porque a única coisa que ela está fazendo é colocar um ícone lá em baixo.
Agradeço.
B
brunolinsalves
Opa…
depende do que você quer fazer …
no exemplo que eu te mostrei …
era só para colocar um item no systemTray … e se você clicar com o botão direito nele e apertar “Quit” ele encerra a aplicação …
você pode inserir mais items no menu que aparece quando você clica no ícone, atribuindo a eles várias utilidades…
porém você pode colocar para ele fazer outras coisas… isso vai depender de como você implemente isso…