A versão do Java Platform, Standard Edition 6 (Java SE 6) permite o acesso a bandeja do sistema (adicionar os Tray Icons), em puro Java, com a ajuda de duas classes do pacote java.awt: SystemTray e TrayIcon. Essas classes tem a capacidade de adicionar icones na bandeja, menus pop-ups e flutuantes.
O que é a Bandeja do sistema?
Bandeja do sistema (Figura) é um local especializado, normalmente, na parte inferior da área de trabalho, onde os usuários podem acessar continuamente executando programas. Normalmente é chamado também de Notification Area ou System Tray. Em cada sistema, esta bandeja área é partilhada por todas as aplicações em execução no desktop.
Acessando a bandeja do sistema com java
O java.awt.SystemTray classe representa bandeja do sistema para o sistema operacional. Você pode acessar chamando o método estático SystemTray.getSystemTray (). No entanto antes devemos sempre verificar se o sistema suporta usando o método estático SystemTray.isSupported (). Se a bandeja do sistema não está presente ou não existe nesta plataforma, o isSupported () método retorna false. Se a aplicação tenta usar getSystemTray () sem suportar o método irá lançar um java.lang.UnsupportedOperationException.
Código de Exemplo:
O trecho seguinte código demonstra como acessar e personalizar bandeja do sistema:
public class TrayIconTeste {
/**
* Representa o tray icon
**/
private TrayIcon trayIcon;
public TrayIconTeste() {
//Verifica se o S.O. suporta tray icon
if (SystemTray.isSupported()) {
//Obtem a bandeja do S.O.
SystemTray tray = SystemTray.getSystemTray();
//Carregando a imagem tray.gif
Image image = Toolkit.getDefaultToolkit().getImage("tray.gif");
//ação de executar
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Executar");
}
};
//ação de sair
ActionListener sairListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Sair");
System.exit(0);
}
};
PopupMenu popup = new PopupMenu();
//Opção executar
MenuItem executarItem = new MenuItem("Executar");
executarItem.addActionListener(actionListener);
popup.add(executarItem);
//submenu
PopupMenu submenu = new PopupMenu("sub-menu");
popup.add(submenu);
//checkbox
submenu.add(new CheckboxMenuItem("Check box"));
//Opção sair
MenuItem sairItem = new MenuItem("Sair");
sairItem.addActionListener(sairListener);
popup.add(sairItem);
// Criando o tray icon e colocando o popup para o
// clique com o botão direito
trayIcon = new TrayIcon(image, "Exemplo - tooltip ", popup);
//Auto-ajuste do tamanho
trayIcon.setImageAutoSize(true);
//Registrando o escutador para evento de clique com
// botao esquerdo
trayIcon.addActionListener(actionListener);
try {
tray.add(trayIcon);
//balão de aviso
trayIcon.displayMessage("Exempo", "Balao de Aviso!", TrayIcon.MessageType.INFO);
} catch (AWTException e) {
System.err.println("TrayIcon não pode ser adicionado no sistema.");
}
} else {
System.err.println("Bandeja do sistema não é suportado.");
}
}
public static void main(String[] args) {
TrayIconTeste exemplo = new TrayIconTeste();
}
}
Implementando TrayIcon
O objeto TrayIcon representa um ícone da bandeja. No entanto, a funcionalidade TrayIcon ultrapassa simplesmente o ícone que é mostrado na bandeja. Pode também ter um texto dica, AWT um menu popup, e um conjunto de ouvintes associados com ele.
A TrayIcon gera vários MouseEvents (pressionado, liberado, e clicado) e suporta a adição de correspondentes ouvintes para receber notificação desses acontecimentos. O TrayIcon por padrão, quando um direito do mouse ele exibe o especificado menu popup. Quando o mouse passa em cima do TrayIcon, a dica é exibida. A TrayIcon também pode gerar um ActionEvent. Em algumas plataformas, isso ocorre quando o usuário seleciona o ícone da bandeja usando o mouse ou teclado.
Espero que consigam dar mais vida a suas aplicações Desktop.
Nota: Para executar o código deste tutorial, você deve baixar e instalar o JDK 6.0
Projeto do netbeans ExemploTrayIcon.zip
[]'s
putz.. procurei isso por mto tempo!!
ResponderExcluirexcelente..
mto bom tutorial!!!