a Giavavassoio delle attività(area di notifica) iconaVisualizzazione/lampeggiante
a Giavavassoio delle attività(area di notifica) viene visualizzata l'icona e lampeggia.
Le classi di utilità sono nuove funzionalità aggiunte in Java SE 6 Mustang. java.awt.SystemTray ,,java.awt.TrayIcon Usa le lezioni. Presenteremo anche un'applicazione di esempio in modo che tu possa capire come usarla.
Funzione vassoio di sistema (vassoio delle applicazioni).
La barra delle applicazioni (barra delle applicazioni) è una fila di piccole icone situata nella parte inferiore destra dello schermo del computer. In Java SE 6 sono state aggiunte le seguenti classi per utilizzare la funzionalità della barra delle applicazioni.
- java.awt.SystemTray
La classe SystemTray rappresenta la barra delle applicazioni del desktop. - java.awt.TrayIcon
L'oggetto TrayIcon rappresenta un'icona nella barra delle applicazioni che può essere aggiunta alla barra delle applicazioni.
Come creare un'icona lampeggiante
Potresti voler utilizzare il seguente sito per creare un'icona lampeggiante.
Crea un'icona lampeggiante caricando un'icona locale.
https://www.bannerkoubou.com/anime/
applicazione di esempio
L'applicazione di esempio utilizza la classe di utilità della barra delle applicazioni TaskTrayUtil per implementare le seguenti funzioni.
- Quando è iniziatovassoio delle attivitàAiconaSpettacolo.
- Fare clic sul [pulsante lampeggiante] pervassoio delle attivitàL'icona lampeggerà.
Il palloncino mostra anche il messaggio "Portami fuori di qui!!" - Fare clic sul [pulsante Annulla] per annullare il lampeggiamento dell'icona.
- vassoio delle attivitàFare clic una sola volta con il tasto sinistro del mouse sull'icona per visualizzare la finestra principale sul desktop.
- vassoio delle attivitàFare clic con il pulsante destro del mouse sull'icona per visualizzare il menu PopupMenu predefinito.
- Quando la finestra principale è ridotta a iconavassoio delle attivitàImmagazzinato.
Ottieni il codice sorgente
Il codice sorgente può essere ottenuto dal basso. Inoltre, durante la compilazione, salva la seguente icona nella stessa posizione del codice sorgente.
importa javax.swing.ImageIcon;
importa javax.swing.JButton;
importa javax.swing.JFrame;
importa javax.swing.JPanel;
importare javax.swing.SwingUtilities;
importa javax.swing.UIManager;
/**
* Visualizza/fa lampeggiare l'icona della barra delle applicazioni (barra di sistema) in Java.
*
* ◆ Panoramica di questa classe
* La classe TaskTray è un'utilità che gestisce la barra delle attività.
* Fornisce le seguenti funzionalità:
* ・Visualizza l'icona nella barra delle applicazioni.
* - Visualizza un messaggio popup nella barra delle applicazioni.
* - Fa lampeggiare la barra delle applicazioni.
*
* ◆ Come utilizzare
* Passa la classe JFrame di destinazione all'argomento del metodo seguente.
* ・creaTray(JFrame targetFrame)
* ・createTray (JFrame finale targetFrame, immagine immagine, menu PopupMenu)
*
*/
classe pubblica TaskTrayUtil {
frame JFrame statico privato;
popupMenu privato statico defaultMenu;
TrayIcon statico privato vassoioIcon;
vassoio SystemTray statico privato = SystemTray.getSystemTray();
Oggetto statico privato INSTANCE_LOCK = nuovo Oggetto();
/**
*Esempio di esecuzione
* @param args
*/
public static void main(String[] args) {
Tentativo {
// Imposta LookAndFeel su Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// icona normale
immagine finale img = nuova iconaimmagine(
TaskTrayUtil.class.getResource(
“tray_icon.gif”)).getImage();
frame JFrame finale =
nuovo JFrame ("Visualizza/lampeggia l'icona nella barra delle applicazioni");
frame.setDimensione(300, 100);
frame.setIconImage(img);
// Memorizza nella barra delle applicazioni quando la finestra è ridotta a icona
// Aggiungi la classe WindowListener come mostrato.
frame.addWindowListener(nuovo WindowAdapter() {
public void windowIconified(WindowEvent e) {
frame.setVisible(falso);
}
});
JPanel jPanel = nuovo JPanel();
jPanel.setLayout(new FlowLayout());
jPanel.setSize(nuova dimensione(219, 70));
// icona lampeggiante
immagine finale imgLight =
nuova ImageIcon(TaskTrayUtil.class.getResource(
“tray_icon_light.gif”)).getImage();
JButton lightButton = nuovo JButton("lampeggia");
lightButton.addActionListener(nuovo ActionListener(){
public void actionPerformed(ActionEvent e) {
onAndOffLight(imgLight, null);
displayMessage(“Messaggio”, “Portami fuori di qui!!”);
}
});
JButton cancelButton = nuovo JButton("cancel");
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
sostituisciImmagineConElimina(img);
}
});
jPanel.add(lightButton, null);
jPanel.add(cancelButton, null);
frame.add(jPanel);
// Termina l'elaborazione.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Visualizza la cornice al centro dello schermo.
frame.setLocationRelativeTo(null);
// Crea la barra delle attività.
TaskTrayUtil.createTray(frame);
frame.setVisible(vero);
} catch (Eccezione e) {
e.printStackTrace();
}
}
/**
*
*/
statico {
creaPopupMenu();
}
/**
* Genera un menu PopupMenu predefinito da visualizzare nella barra delle applicazioni.
*Sono disponibili i seguenti menu.
* ・"Rimuovi dalla barra delle applicazioni"
* Spostare l'applicazione di destinazione dalla barra delle applicazioni al desktop
* Tiralo fuori.
* (Attiva la finestra e portala in primo piano.)
* - Termina l'applicazione da terminare.
*/
private static void createPopupMenu() {
MenuItem getTrayItem = new MenuItem("Rimuovi dalla barra delle applicazioni");
getTrayItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
attivo();
}
});
MenuItem exitItem = nuovo MenuItem("Esci");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
rimuoviTrayIcon();
TaskTrayUtil.frame.setVisible(falso);
TaskTrayUtil.frame.dispose();
Sistema.uscita(0);
}
});
defaultMenu = nuovo PopupMenu();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* Crea un'icona nella barra delle applicazioni e aggiungila alla barra delle applicazioni.
* Imposta un ascoltatore per gli eventi che si verificano sull'icona su targetFrame
Impostato *.
* L'evento qui si verifica quando si fa doppio clic sull'icona nella barra delle applicazioni.
* Estrai l'applicazione di destinazione.
* @param targetFrame Applicazione di destinazione
*/
public static void createTray(JFrame targetFrame) {
createTray(targetFrame, null, null);
}
/**
* Crea un'icona nella barra delle applicazioni e aggiungila alla barra delle applicazioni.
*
* @param targetFrame Applicazione di destinazione
* @param image Immagine immagine da visualizzare sull'icona della barra delle applicazioni.
* Se null, può essere ottenuto da targetFrame con getIconImage()
* Usa immagini immagine.
* @param menu PopupMenu da visualizzare nella barra delle applicazioni.
* Se nullo, visualizza il PopupMenu predefinito.
*/
public static void createTray(final JFrame targetFrame, immagine immagine,
Menu popup) {
// Esce se la barra delle applicazioni non è supportata.
if (!SystemTray.isSupported()) {
ritorno;
}
TaskTrayUtil.frame = targetFrame;
se (immagine == null) {
immagine = targetFrame.getIconImage();
}
se (menu == null) {
menu = menu predefinito;
}
vassoioIcon = nuovo TrayIcon(immagine, targetFrame.getTitle(), menu);
vassoioIcon.setImageAutoSize(true);
vassoioIcon.addMouseListener(nuovo MouseAdapter(){
public void mouseClicked(MouseEvent e) {
se (SwingUtilities.isLeftMouseButton(e)) {
attivo();
}
}
});
Tentativo {
vassoio.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Rimuovi l'icona dalla barra delle applicazioni.
* Deve essere chiamato alla chiusura dell'applicazione.
*/
pubblico statico void rimuoviTrayIcon() {
vassoio.remove(trayIcon);
}
/**
* Fai lampeggiare l'icona nella barra delle applicazioni.
* @param msg se necessario quando si fa clic sull'icona lampeggiante
* Imposta il messaggio da visualizzare.
*/
public static void onAndOffLight(Immagine lightImg, String msg) {
sostituisciImmagine(luceImg);
ChangeLightImgAdapter adattare =
nuovo TaskTrayUtil().new ChangeLightImgAdapter(msg);
vassoioIcon.addMouseListener(adap);
frame.addWindowListener(adap);
}
/**
* Cambia l'icona nella barra delle applicazioni.
* @param image Cambia solo se è diversa dall'icona corrente.
*/
public static void replaceImage(Immagine immagine) {
sincronizzato (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
vassoioIcon.setImage(immagine);
}
}
}
/**
* Cambia l'icona nella barra delle applicazioni.
* *Se desideri ripristinare l'icona che lampeggia per qualche motivo,
* Sembra essere inutile a meno che non lo elimini con {@link SystemTray#remove(TrayIcon)}).
* @param image Cambia solo se è diversa dall'icona corrente.
*/
public static void replaceImageWithDelete(Immagine immagine) {
sincronizzato (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
vassoio.remove(trayIcon);
vassoioIcon.setImage(immagine);
Tentativo {
vassoio.add(trayIcon);
} catch (Eccezione e) {
e.printStackTrace();
}
}
}
}
/**
* Visualizzare un messaggio pop-up nella barra delle applicazioni.
* Didascalia @param
* Testo @param
*/
public static void displayMessage(String caption, String text) {
if (didascalia!= null || testo!= null) {
vassoioIcon.displayMessage(didascalia, testo,
TrayIcon.MessageType.INFO);
}
}
/**
* Spostare l'applicazione di destinazione dalla barra delle applicazioni al desktop
* Tiralo fuori.
*/
vuoto statico privato attivo() {
// Riporta lo stato del frame alla normalità.
TaskTrayUtil.frame.setExtendedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(true);
TaskTrayUtil.frame.setVisible(true);
TaskTrayUtil.frame.setAlwaysOnTop(false);
}
/**
* Evento da generare quando si fa clic sull'icona lampeggiante
* Classe di ascolto.
*/
la classe ChangeLightImgAdapter implementa WindowListener, MouseListener {
Stringa lightImageText;
public ChangeLightImgAdapter(String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Quando si fa clic sull'icona nella barra delle applicazioni
* Mostra messaggio popup.
*/
public void mousePressed(MouseEvent e) {
TaskTrayUtil.displayMessage(null, lightImageText);
}
/**
* Lampeggiava quando l'applicazione di destinazione diventava attiva
* Icona Ritorno.
*/
finestra pubblica vuotaAttivata(WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(questo);
TaskTrayUtil.trayIcon.removeMouseListener(questo);
}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowDisattivato(WindowEvent e) {}
public void windowDeiconified(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) {}
}
}