Buenas galera…
Vamos ver se eu consigo uma ajudinha de vocês… Tenho minhas classes de controle de TrayIcon, que por sinal não aparece o icone, ele simplesmente fica invisível quando está na trayIcon, porém a aplicação fica ali e se der dois cliques nela ela aparece normalmente.
Segue classes abaixo.
package JinternalFrame;
/**
*
* @author Flôres
*/
import javax.swing.*;
public class Principal extends JFrame {
public Principal() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
System.out.println(ex);
}
this.setSize(800, 600);
this.setExtendedState(MAXIMIZED_BOTH);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
package JinternalFrame;
import Utilitario.MostraErro;
import java.awt.AWTException;
import java.io.File;
import java.io.IOException;
import javax.swing.ImageIcon;
/**
*
* @author Flôres
*/
public class TryIcon {
private static Utilitario.ControleTrayIcon trayManager;
public static void main(String args[]) {
try {
Principal janela = new Principal();
janela.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
janela.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
try {
trayManager.adicionarATray();
} catch (AWTException ex) {
System.out.println(ex);
}
}
});
ImageIcon icon = new ImageIcon("Y:\\Filmes\\lib\\Filmes.png");
System.out.println(icon.getIconWidth());
trayManager = new Utilitario.ControleTrayIcon(janela, icon);
trayManager.setBalaoSistemaDescricao("Duplo clique para maximizar a janela");
trayManager.setBalaoSistemaTitulo("Titulo do balão");
trayManager.setToolTipText("Duplo clique para maximizar a janela");
trayManager.criarTrayIcon();
trayManager.adicionarATray();
} catch (AWTException ex) {
new MostraErro("Erro ao habilitar o sistema para o tryIcon", ex.toString());
}
}
}
package Utilitario;
import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import javax.swing.ImageIcon;
public class ControleTrayIcon {
private boolean suportaTrayIcon;
private TrayIcon trayIcon;
private Window parent;
private String[] textoMenu = {"Restaurar", "Reiniciar", "Sair"};
private ImageIcon icone;
private String toolTipText;
private String balaoSistemaTitulo;
private String balaoSistemaDescricao;
private MenuItem itemSair;
public ControleTrayIcon (Window parent, String[] textoMenu, ImageIcon icone, String toolTipText, String balaoSistemaTitulo, String balaoSistemaDescricao, MenuItem[] itensExtras){
this.parent = parent;
this.textoMenu = textoMenu;
this.icone = icone;
this.toolTipText = toolTipText;
this.balaoSistemaTitulo = balaoSistemaTitulo;
this.balaoSistemaDescricao = balaoSistemaDescricao;
this.setSuportaTrayIcon(true);
this.criarTrayIcon(itensExtras);
}
public ControleTrayIcon(Window parent, String[] textoMenu, ImageIcon icone, String toolTipText, String balaoSistemaTitulo, String balaoSistemaDescricao){
this.parent = parent;
this.textoMenu = textoMenu;
this.icone = icone;
this.toolTipText = toolTipText;
this.balaoSistemaTitulo = balaoSistemaTitulo;
this.balaoSistemaDescricao = balaoSistemaDescricao;
this.setSuportaTrayIcon(true);
this.criarTrayIcon();
}
public ControleTrayIcon(Window parent, ImageIcon icone) {
this.parent = parent;
this.icone = icone;
this.setSuportaTrayIcon(true);
}
public void criarTrayIcon() {
this.criarTrayIcon(null);
}
public void criarTrayIcon(MenuItem[] itensExtras) {
if (!SystemTray.isSupported()) {
this.setSuportaTrayIcon(false);
return;
}
final PopupMenu menu = new PopupMenu();
MenuItem itemRestaurar = new MenuItem(textoMenu[0]);
itemRestaurar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SystemTray.getSystemTray().remove(trayIcon);
parent.setVisible(true);
}
});
menu.add(itemRestaurar);
MenuItem itemReiniciar = new MenuItem(textoMenu[1]);
itemReiniciar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String comando = Fc.f().pgetStringRunTimeDLL() + Fc.f().pgetLocalDoAplicativo() + "/SistemaUnificado.jar";
try {
Runtime.getRuntime().exec(comando);
} catch (IOException e1) {
System.out.println(e1);
}
System.exit(0);
}
});
menu.add(itemReiniciar);
if (itensExtras != null)
for (MenuItem item : itensExtras)
menu.add(item);
this.itemSair = new MenuItem(this.textoMenu[2]);
this.itemSair.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(this.itemSair);
this.trayIcon = new TrayIcon(this.icone.getImage(), this.toolTipText, menu);
this.trayIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
SystemTray.getSystemTray().remove(trayIcon);
parent.setVisible(true);
}
}
});
}
public void adicionarATray() throws AWTException {
if (this.isSuportaTrayIcon()) {
parent.dispose();
SystemTray.getSystemTray().add(trayIcon);
trayIcon.displayMessage(balaoSistemaTitulo, balaoSistemaDescricao, TrayIcon.MessageType.INFO);
}
}
public void setBalaoSistemaDescricao(String balaoSistemaDescricao) {
this.balaoSistemaDescricao = balaoSistemaDescricao;
}
public void setBalaoSistemaTitulo(String balaoSistemaTitulo) {
this.balaoSistemaTitulo = balaoSistemaTitulo;
}
public void setIcone(ImageIcon icone) {
this.icone = icone;
}
public void setParent(Window parent) {
this.parent = parent;
}
public void setTextoMenu(String[] textoMenu) {
this.textoMenu = textoMenu;
}
public void setToolTipText(String toolTipText) {
this.toolTipText = toolTipText;
}
public void setTrayIcon(TrayIcon trayIcon) {
this.trayIcon = trayIcon;
}
public boolean isSuportaTrayIcon() {
return suportaTrayIcon;
}
public void setSuportaTrayIcon(boolean suportaTrayIcon) {
this.suportaTrayIcon = suportaTrayIcon;
}
}