Tray Icon nas diversas interfaces gráficas (linux & windows)

Olá!
Estou precisando de uma biblioteca de tray icon (para exibir o íconezinho na bandeija do sistema) que funcione tanto no Gnome quanto do KDE e no windows. Alguém conhece?

Encontrei esta aqui :http://systray.sourceforge.net porém ainda não está nativa no gnome.
Valeu

Dá uma conferida em TrayIcon do Mustang em

http://java.sun.com/javase/6/docs/api/

Tem como você dar um exemplo do uso dela?

aqui não estou encontrando essa classe quando tento chamar o java.awt.TrayIcon no netbeans.

Obrigado!

Ou:

https://jdic.dev.java.net/

olá

[quote=chackal_sjc]Tem como você dar um exemplo do uso dela?

aqui não estou encontrando essa classe quando tento chamar o java.awt.TrayIcon no netbeans.

Obrigado![/quote]

Esta classe só existirá na próxima versão do Java (a que seria chamada de Mustang) que deve sair na primeira semana de dezembro. Mas você pode baixar o build 98 que já está bem estável e provavelmente bem igual à versão final. Eu estou usando direto para tudo. O link é http://download.java.net/jdk6/

Baixe também os docs.

[]s
Luca

Apenas a titulo de informação,

Recentemente tivemos um problema na utilização do JDIC no projeto XMPM da BenQ-Siemens. No linux ocorre, frequentemente, o congelamento do X (ambiente gráfico), tanto no KDE como no GNOME, quando alguma operação, tenta ser realizada com o tray icon e consequentemente é preciso reiniciar o sistema operacional.

Tentamos recompilar as libs em C (.so) que vem junto com a API mas mesmo assim o travamento persistiu.
E não encontramos nenhum bug deste gênero reportado.

Sendo assim deixo esta informação para que fiquem atentos caso alguém passe por esse problema no linux.

Abraços,

Gyowanny Queiroz

eu usei a jdic aqui no linux e funcionou perfeitamente… no KDE e no GNOME… não testei no windows ainda pq nao tenho as dll dela… mas no linux funcionou certinho… gostei muita ta biblioteca…

falando nisso…
como que faço para chamar outro aplicativo pelo meu programa em java??
por exemplo… eu tenho um outro programa Tecnotel.jar e queria executa-lo pelo meu programinha de systemtray (.jar separado)… tem como??
tem como também fazer comandos do sistema pelo java? Por exemplo… comandos em bash para unix…

Obrigado

chackal_sjc,
respondendo a sua pergunta sobre comandos do sistema pelo java, tem um codigo de uma cara q faz isso.
http://www.google.com.br/search?hl=pt-BR&client=firefox-a&rls=org.mozilla%3Apt-BR%3Aofficial&hs=esZ&q=executacomando+java+unix+win&btnG=Pesquisar&meta=

primeiro link…

Agora a minha…
estou tendo problemas com um código que utiliza a biblitoteca Jdic no KDE,

package TrayJdic;

import java.awt.event.*;
import javax.swing.*;
import org.jdesktop.jdic.tray.*;

public class TestTray {
    public static JMenuItem quit;
    public TestTray() {
        ImageIcon icon2 = new ImageIcon(getClass().getClassLoader().getResource("images/image1.gif"));
        TrayIcon ti = new TrayIcon(icon2, "JDIC tray Icon API Test", menu());
        ti.setIconAutoSize(true);
        ti.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null,"JDIC Tray Icon API Test!", "About",JOptionPane.INFORMATION_MESSAGE);
            }
        });
        SystemTray tray = SystemTray.getDefaultSystemTray();
        tray.addTrayIcon(ti);
    }
    public JPopupMenu menu(){
        ImageIcon icon = new ImageIcon(getClass().getClassLoader().getResource("images/image2.png"));
        JPopupMenu menu = new JPopupMenu("Tray Icon Menu");
        JMenuItem planeta = new JMenuItem("planeta",icon);
        planeta.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                System.out.print("oba");
            }});
        menu.add(planeta);
        menu.addSeparator();
        JMenuItem quitItem = new JMenuItem("Quit");
        quitItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                System.exit(0);
            }});
        menu.add(quitItem);
        return menu;
        }
    public static void main(String[] args){
        new TestTray();
    }
}

ao se clicar como botão direito do mouse no ícone criado, no KDE parece que “o botão fica falhando”, o menu pisca rapidamente, ás vezes aparece. :cry: Testei no GNOME e no Win funcionou blz. :wink:

Alguém saberia me informar o pq disso?
Obrigado.

Sim, o Tray não funciona no KDE.

Tem algum lugar que está escrito isso? pode ter algum jeito de contornar? :shock:
ou o chackal_sjc viajou… :smiley:

ola pessoal,
estou re-postando esse tópico para relembrar o assunto…
eu estou agora criando uma aplicação e irei utilizar o tray, mas quero q a mesma funcione em todas as plataformas, inclusive na interface do KDE no linux, testei aqui no windows XP e ate mesmo aqui o icone n apareceu.
Na barra de ferramentas apareceu o espaço onde o icone deveria aparecer, e clicando invertido no espaço abre o menu, só q a imagem do icone n aparece…
testei com várias extensões de img, .ICO .GIF .PNG

[code]/*

  • Main.java
  • Created on 6 de Setembro de 2007, 14:58
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

package configurador;

import java.awt.AWTException;
import java.awt.Image;
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 javax.swing.ImageIcon;
import javax.swing.JOptionPane;

/**
*

  • @author homisinho
    /
    public class Main {
    public static SystemTray tray;
    /
    * Creates a new instance of Main */
    public Main() {
    }

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) throws AWTException {
      //Obtem o SystemTray da plataforma
      tray = SystemTray.getSystemTray();
      //Passa para função para criar o menu e adicionar
      Criatry(tray);
      //////////////////////////////////////////////////
      Fconfigura ra= new Fconfigura();
      ra.setLocationRelativeTo(null);
      ra.setVisible(true);
      }

    public static void Criatry(SystemTray T) throws AWTException{
    //Cria um menu Popup para o trayIcon
    PopupMenu popupMenu = new PopupMenu();
    MenuItem menuItem = new MenuItem(“Sobre”);
    menuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(null,“msg”, “titulo”, JOptionPane.INFORMATION_MESSAGE);
    }});

     popupMenu.add(menuItem);
     popupMenu.add(new MenuItem("-"));
    
     menuItem = new MenuItem("Exit");
     menuItem.addActionListener(new ActionListener() {
     	public void actionPerformed(ActionEvent e) {
     		int opt = JOptionPane.showConfirmDialog(null, "Fechar?", "SAIR", JOptionPane.YES_NO_OPTION);
     		if (opt == JOptionPane.OK_OPTION) {
     			System.exit(0);
     		}
     	}});
     popupMenu.add(menuItem);
     //adiciona no tryIcon
     Image imageIcon = new ImageIcon("/imagens/teste.GIF").getImage();
     TrayIcon trayIcon = new TrayIcon(imageIcon, "name sistema", popupMenu);		
     T.add(trayIcon);
    

    }
    }
    [/code]

alguem ai ja criou um tray que funcionou tanto em linux quanto em windows???