Iremos fazer uma aplicação besta, que não faz absolutamente nada a não ser colocar o programa na tray. Mas explicaremos aqui os principais conceitos para você fazer programas de gente grande com esse novo recurso. Então vamos ao código. \o/
Iremos supor que você já sabe java :) e assim iremos pular alguns conceitos básicos.
Se você não quiser ter trabalho lendo tudo isso aqui, você pode também baixar o projeto protinho. Coloquei alguns comentários no código fonte pra dar uma ajudinha.
import java.awt.AWTException;
import java.awt.FlowLayout;
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 java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
*
* @author Robson de Araújo - http://javeiro.blogspot.com
*/
public class Janela extends JFrame{
private JButton botao;
private TrayIcon trayIcon;
public Janela() {
setTitle("Minha Janela");
setLayout(new FlowLayout());
add(botao = new JButton("Enviar para a tray"));
criarTrayIcon();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(200,100);
setLocationRelativeTo(null);
adicionarListeners();
setVisible(true);
}
// habilita os listeners
private void adicionarListeners(){
addWindowListener(new WindowAdapter() {
@Override
public void windowIconified(WindowEvent e) {
adicionarATray();
}
});
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
adicionarATray();
}
});
}
private void criarTrayIcon() {
SystemTray tray = SystemTray.getSystemTray();
// Verifica se o sistema suporta Ãcones na system tray
if (!tray.isSupported()) {
System.out.println("Não é possível executar a app");
System.exit(0);
}
//icone q será exibido na bandeja
ImageIcon icon = new ImageIcon("images/icone.gif");
setIconImage(icon.getImage());
// cria um menu popup para interagir com a aplicação na system tray
PopupMenu menu = new PopupMenu();
MenuItem itemRestaurar = new MenuItem("Restaurar");
itemRestaurar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// remove a aplicação da tray
SystemTray.getSystemTray().remove(trayIcon);
setVisible(true);
}
});
MenuItem itemSair = new MenuItem("Sair");
itemSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(itemRestaurar);
menu.add(itemSair);
// cria o ícone e adiciona o menu a ele
trayIcon = new TrayIcon(icon.getImage(), "Server",menu);
trayIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
SystemTray.getSystemTray().remove(trayIcon);
setVisible(true);
}
}
});
}
private void adicionarATray() {
try {
// esconde a janela
dispose();
//adiciona seu programa a systema tray
SystemTray.getSystemTray().add(trayIcon);
// aquele balãozinho que aparece qdo o programa tá lá :)
trayIcon.displayMessage("Minha Janela", "Minha Janela está executando.", TrayIcon.MessageType.INFO);
} catch (AWTException ex) {
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {
new Janela();
}
}
Se você desejar aprender mais sobre SystemTray é só visitar o site do Java que foi de onde eu tirei parte deste tutorial. Por enquanto é isso. Até o próximo post!
muito bacana o tutorial man!
ResponderExcluir