em Javabandeja de tarefas(bandeja do sistema) íconeExibição/piscando
em Javabandeja de tarefas(bandeja do sistema) o ícone é exibido e pisca.
Classes utilitárias são novos recursos adicionados ao Java SE 6 Mustang. java.awt.SystemTray ,,java.awt.TrayIcon Use aulas. Também apresentaremos um aplicativo de exemplo para que você possa entender como usá-lo.
Função da bandeja do sistema (bandeja de tarefas)
A bandeja do sistema (bandeja de tarefas) é uma linha de pequenos ícones localizados na parte inferior direita da tela do computador. No Java SE 6, as classes a seguir foram adicionadas para usar a funcionalidade da bandeja do sistema.
- java.awt.SystemTray
A classe SystemTray representa a bandeja do sistema da área de trabalho. - java.awt.TrayIcon
O objeto TrayIcon representa um ícone da bandeja que pode ser adicionado à bandeja do sistema.
Como criar um ícone piscando
Você pode usar o site a seguir para criar um ícone piscante.
Crie um ícone piscante carregando um ícone local.
https://www.bannerkoubou.com/anime/
aplicativo de amostra
O aplicativo de exemplo usa a classe de utilitário da bandeja do sistema TaskTrayUtil para implementar as funções a seguir.
- Quando começoubandeja de tarefasparaíconeMostrar.
- Clique no [botão piscando] parabandeja de tarefasO ícone piscará.
O balão também exibe a mensagem "Tire-me daqui!!" - Clique no [botão Cancelar] para cancelar o ícone piscando.
- bandeja de tarefasClique uma vez com o botão esquerdo no ícone para exibir a janela principal na área de trabalho.
- bandeja de tarefasClique com o botão direito no ícone para exibir o menu PopupMenu padrão.
- Quando a janela principal está minimizadabandeja de tarefasArmazenado em.
Obtenha o código-fonte
O código fonte pode ser obtido abaixo. Além disso, ao compilar, salve o ícone a seguir no mesmo local do código-fonte.
importar javax.swing.ImageIcon;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing.JPanel;
importar javax.swing.SwingUtilities;
importar javax.swing.UIManager;
/**
* Exibir/piscar o ícone da bandeja de tarefas (bandeja do sistema) em Java.
*
* ◆ Visão geral desta aula
* A classe TaskTray é um utilitário que controla a bandeja de tarefas.
* Fornece os seguintes recursos:
* ・Exiba o ícone na bandeja de tarefas.
* - Exibe uma mensagem pop-up na bandeja de tarefas.
* - Faça a bandeja de tarefas piscar.
*
* ◆ Como usar
* Passe a classe JFrame de destino para o argumento do método abaixo.
* ・createTray(JFrame targetFrame)
* ・createTray(JFrame final targetFrame, imagem, menu PopupMenu)
*
*/
classe pública TaskTrayUtil {
quadro JFrame estático privado;
private static PopupMenu defaultMenu;
private static TrayIcon bandejaIcon;
bandeja SystemTray estática privada = SystemTray.getSystemTray();
Objeto estático privado INSTANCE_LOCK = new Object();
/**
* Amostra de execução
* @param argumentos
*/
public static void main(String[] args) {
tentar {
//Configura LookAndFeel para Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
//ícone normal
imagem final img = new ImageIcon(
TaskTrayUtil.class.getResource(
“tray_icon.gif”)).getImage();
quadro JFrame final =
new JFrame(“Exibir/piscar ícone na bandeja de tarefas”);
frame.setSize(300, 100);
frame.setIconImage(img);
// Armazena na bandeja de tarefas quando a janela é minimizada
// Adicione a classe WindowListener conforme mostrado.
frame.addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent e) {
frame.setVisible(falso);
}
});
JPanel jPanel = new JPanel();
jPanel.setLayout(novo FlowLayout());
jPanel.setSize(nova Dimensão(219, 70));
//ícone piscando
imagem final imgLight =
novo ImageIcon(TaskTrayUtil.class.getResource(
“tray_icon_light.gif”)).getImage();
JButton lightButton = new JButton(“piscar”);
lightButton.addActionListener(novo ActionListener(){
public void actionPerformed(ActionEvent e) {
onAndOffLight(imgLight, null);
displayMessage(“Mensagem”, “Tire-me daqui!!”);
}
});
JButton cancelButton = new JButton(“cancelar”);
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
substituirImageWithDelete(img);
}
});
jPanel.add(lightButton, null);
jPanel.add(cancelButton, null);
frame.add(jPanel);
// Finaliza o processamento.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Exibe o quadro no centro da tela.
frame.setLocationRelativeTo (nulo);
// Cria a bandeja de tarefas.
TaskTrayUtil.createTray(quadro);
frame.setVisible (verdadeiro);
} catch (Exceção e) {
e.printStackTrace();
}
}
/**
*
*/
estático {
createPopupMenu();
}
/**
* Gera um menu PopupMenu padrão para ser exibido na bandeja de tarefas.
*Os seguintes menus estão disponíveis.
* ・"Remover da bandeja de tarefas"
* Mova o aplicativo de destino da bandeja de tarefas para a área de trabalho
* Tirá-lo.
* (Ative a janela e traga-a para frente.)
* - Encerre o aplicativo a ser encerrado.
*/
private static void createPopupMenu() {
MenuItem getTrayItem = new MenuItem(“Remover da bandeja de tarefas”);
getTrayItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ativo();
}
});
MenuItem exitItem = new MenuItem(“Sair”);
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
removeTrayIcon();
TaskTrayUtil.frame.setVisible(falso);
TaskTrayUtil.frame.dispose();
Sistema.exit(0);
}
});
defaultMenu = new PopupMenu();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* Crie um ícone na bandeja e adicione-o à bandeja do sistema.
* Defina um ouvinte para eventos que ocorrem no ícone para targetFrame
Definido como *.
* O evento aqui é quando o ícone da bandeja é clicado duas vezes.
* Extraia o aplicativo de destino.
* @param targetFrame Aplicativo de destino
*/
public static void createTray(JFrame targetFrame) {
createTray(targetFrame, null, null);
}
/**
* Crie um ícone na bandeja e adicione-o à bandeja do sistema.
*
* @param targetFrame Aplicativo de destino
* @param image Imagem a ser exibida no ícone da bandeja.
* Se for nulo, pode ser obtido de targetFrame com getIconImage()
* Use imagens de imagem.
* @param menu PopupMenu para exibir na bandeja de tarefas.
* Se for nulo, exibe o PopupMenu padrão.
*/
public static void createTray (final JFrame targetFrame, imagem imagem,
Menu pop-up) {
// Sai se a bandeja do sistema não for suportada.
if (!SystemTray.isSupported()) {
retornar;
}
TaskTrayUtil.frame = targetFrame;
if (imagem == nulo) {
imagem = targetFrame.getIconImage();
}
if (menu == nulo) {
menu = menupadrão;
}
bandejaIcon = novo TrayIcon(imagem, targetFrame.getTitle(), menu);
bandejaIcon.setImageAutoSize(true);
bandejaIcon.addMouseListener(novo MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
ativo();
}
}
});
tentar {
bandeja.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Remova o ícone da bandeja de tarefas.
* Deve ser chamado quando o aplicativo for encerrado.
*/
public static void removeTrayIcon() {
bandeja.remove(trayIcon);
}
/**
* Faça o ícone da bandeja de tarefas piscar.
* @param msg se necessário quando o ícone piscante é clicado
* Defina a mensagem a ser exibida.
*/
public static void onAndOffLight(Image lightImg, String msg) {
substituirImagem(lightImg);
Adaptador ChangeLightImgAdapter =
novo TaskTrayUtil().new ChangeLightImgAdapter(msg);
bandejaIcon.addMouseListener(adap);
frame.addWindowListener(adap);
}
/**
* Altere o ícone da bandeja de tarefas.
* @param image Altere apenas se for diferente do ícone atual.
*/
public static void replaceImage(Imagem da imagem) {
sincronizado (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
bandejaIcon.setImage(imagem);
}
}
}
/**
* Altere o ícone da bandeja de tarefas.
* *Se você deseja restaurar o ícone que está piscando por algum motivo,
* Parece inútil, a menos que você o exclua com {@link SystemTray#remove(TrayIcon)}).
* @param image Altere apenas se for diferente do ícone atual.
*/
public static void replaceImageWithDelete(Imagem imagem) {
sincronizado (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
bandeja.remove(trayIcon);
bandejaIcon.setImage(imagem);
tentar {
bandeja.add(trayIcon);
} catch (Exceção e) {
e.printStackTrace();
}
}
}
}
/**
* Exiba uma mensagem pop-up na bandeja de tarefas.
* @param legenda
* @param texto
*/
public static void displayMessage(String caption, String text) {
if (legenda! = nulo || texto! = nulo) {
bandejaIcon.displayMessage(legenda, texto,
TrayIcon.MessageType.INFO);
}
}
/**
* Mova o aplicativo de destino da bandeja de tarefas para a área de trabalho
* Tirá-lo.
*/
privado estático void ativo() {
//Retorna o estado do quadro ao normal.
TaskTrayUtil.frame.setExtendedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(true);
TaskTrayUtil.frame.setVisible(true);
TaskTrayUtil.frame.setAlwaysOnTop(falso);
}
/**
* Evento a ser gerado quando o ícone piscante for clicado
* Classe de ouvinte.
*/
classe ChangeLightImgAdapter implementa WindowListener, MouseListener {
String lightImageText;
public ChangeLightImgAdapter(String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Quando o ícone da bandeja de tarefas é clicado
* Mostrar mensagem pop-up.
*/
public void mousePressed(MouseEvent e) {
TaskTrayUtil.displayMessage(nulo,lightImageText);
}
/**
* Piscou quando o aplicativo de destino ficou ativo
* Ícone de retorno.
*/
public void windowActivated(WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(this);
TaskTrayUtil.trayIcon.removeMouseListener(this);
}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
janela vazia públicaDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
}