in JavaTaskleiste(System Tray) SymbolAnzeige/Blinken
in JavaTaskleiste(System Tray)-Symbol wird angezeigt und blinkt.
Dienstprogrammklassen sind neue Funktionen, die in Java SE 6 Mustang hinzugefügt wurden. java.awt.SystemTray ,,java.awt.TrayIcon Verwenden Sie Klassen. Wir stellen Ihnen auch eine Beispielanwendung vor, damit Sie verstehen, wie Sie sie verwenden.
Funktion der Taskleiste (Taskleiste).
Die Taskleiste (Taskleiste) ist eine Reihe kleiner Symbole, die sich unten rechts auf Ihrem Computerbildschirm befinden. In Java SE 6 wurden die folgenden Klassen hinzugefügt, um die Taskleistenfunktionalität zu nutzen.
- java.awt.SystemTray
Die SystemTray-Klasse repräsentiert die Desktop-Taskleiste. - java.awt.TrayIcon
Das TrayIcon-Objekt stellt ein Taskleistensymbol dar, das der Taskleiste hinzugefügt werden kann.
So erstellen Sie ein blinkendes Symbol
Möglicherweise möchten Sie die folgende Website verwenden, um ein blinkendes Symbol zu erstellen.
Erstellen Sie ein blinkendes Symbol, indem Sie ein lokales Symbol hochladen.
https://www.bannerkoubou.com/anime/
Beispielanwendung
Die Beispielanwendung verwendet die TaskTray-Dienstprogrammklasse TaskTrayUtil, um die folgenden Funktionen zu implementieren.
- Beim StartTaskleisteZuSymbolZeigen.
- Klicken Sie auf die [blinkende Schaltfläche], umTaskleisteDas Symbol blinkt.
Der Ballon zeigt auch die Nachricht „Holt mich hier raus!!“ an. - Klicken Sie auf die Schaltfläche „Abbrechen“, um das Blinken des Symbols abzubrechen.
- TaskleisteKlicken Sie einmal mit der linken Maustaste auf das Symbol, um das Hauptfenster auf dem Desktop anzuzeigen.
- TaskleisteKlicken Sie mit der rechten Maustaste auf das Symbol, um das Standardmenü „PopupMenu“ anzuzeigen.
- Wenn das Hauptfenster minimiert istTaskleisteGespeichert in.
Holen Sie sich den Quellcode
Den Quellcode erhalten Sie weiter unten. Bitte speichern Sie beim Kompilieren außerdem das folgende Symbol am selben Ort wie den Quellcode.
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
/**
* Das Taskleistensymbol (Taskleiste) in Java anzeigen/blinken lassen.
*
* ◆ Überblick über diese Klasse
* Die TaskTray-Klasse ist ein Dienstprogramm, das die Taskleiste verwaltet.
* Bietet die folgenden Funktionen:
* ・Zeigen Sie das Symbol in der Taskleiste an.
* – Zeigt eine Popup-Nachricht in der Taskleiste an.
* – Lassen Sie die Taskleiste blinken.
*
* ◆ Verwendung
* Übergeben Sie die Ziel-JFrame-Klasse an das Methodenargument unten.
* ・createTray(JFrame targetFrame)
* ・createTray(endgültiger JFrame-Zielrahmen, Bildbild, PopupMenu-Menü)
*
*/
öffentliche Klasse TaskTrayUtil {
privater statischer JFrame-Frame;
privates statisches PopupMenu defaultMenu;
privates statisches TrayIcon TrayIcon;
privates statisches SystemTray Tray = SystemTray.getSystemTray();
privates statisches Objekt INSTANCE_LOCK = new Object();
/**
* Ausführungsbeispiel
* @param args
*/
public static void main(String[] args) {
versuchen {
// LookAndFeel auf Windows setzen
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// normales Symbol
endgültiges Bild img = neues ImageIcon(
TaskTrayUtil.class.getResource(
„tray_icon.gif“)).getImage();
letzter JFrame-Frame =
neuer JFrame („Symbol in der Taskleiste anzeigen/blinken“);
frame.setSize(300, 100);
frame.setIconImage(img);
// In der Taskleiste speichern, wenn das Fenster minimiert ist
// WindowListener-Klasse wie gezeigt hinzufügen.
frame.addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent e) {
frame.setVisible(false);
}
});
JPanel jPanel = new JPanel();
jPanel.setLayout(new FlowLayout());
jPanel.setSize(new Dimension(219, 70));
// blinkendes Symbol
endgültiges Bild imgLight =
neues ImageIcon(TaskTrayUtil.class.getResource(
„tray_icon_light.gif“)).getImage();
JButton lightButton = new JButton(“blink”);
lightButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
onAndOffLight(imgLight, null);
displayMessage(„Nachricht“, „Holt mich hier raus!!“);
}
});
JButton cancelButton = new JButton(“cancel”);
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
replaceImageWithDelete(img);
}
});
jPanel.add(lightButton, null);
jPanel.add(cancelButton, null);
frame.add(jPanel);
// Verarbeitung beenden.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Den Rahmen in der Mitte des Bildschirms anzeigen.
frame.setLocationRelativeTo(null);
// Taskleiste erstellen.
TaskTrayUtil.createTray(frame);
frame.setVisible(true);
} Catch (Ausnahme e) {
e.printStackTrace();
}
}
/**
*
*/
statisch {
createPopupMenu();
}
/**
* Erstellt ein Standard-PopupMenu-Menü, das in der Taskleiste angezeigt wird.
*Die folgenden Menüs sind verfügbar.
* ・„Aus der Taskleiste entfernen“
* Verschieben Sie die Zielanwendung von der Taskleiste auf den Desktop
* Hol es raus.
* (Aktivieren Sie das Fenster und bringen Sie es nach vorne.)
* - Beenden Sie die zu beendende Anwendung.
*/
private static void createPopupMenu() {
MenuItem getTrayItem = new MenuItem(“Aus Taskleiste entfernen”);
getTrayItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
aktiv();
}
});
MenuItem exitItem = new MenuItem(“Exit”);
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
removeTrayIcon();
TaskTrayUtil.frame.setVisible(false);
TaskTrayUtil.frame.dispose();
System.exit(0);
}
});
defaultMenu = new PopupMenu();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* Erstellen Sie ein Taskleistensymbol und fügen Sie es der Taskleiste hinzu.
* Setzen Sie einen Listener für Ereignisse, die auf dem Symbol auftreten, auf targetFrame
Einstellen *.
* Das Ereignis tritt hier ein, wenn auf das Taskleistensymbol doppelgeklickt wird.
* Extrahieren Sie die Zielanwendung.
* @param targetFrame Zielanwendung
*/
public static void createTray(JFrame targetFrame) {
createTray(targetFrame, null, null);
}
/**
* Erstellen Sie ein Taskleistensymbol und fügen Sie es der Taskleiste hinzu.
*
* @param targetFrame Zielanwendung
* @param image Bild, das auf dem Taskleistensymbol angezeigt werden soll.
* Wenn null, kann es mit getIconImage() von targetFrame abgerufen werden
* Verwenden Sie Bildbilder.
* @param-Menü PopupMenu zur Anzeige in der Taskleiste.
* Wenn null, wird das Standard-PopupMenu angezeigt.
*/
public static void createTray(final JFrame targetFrame, Image image,
PopupMenu-Menü) {
// Beenden, wenn die Taskleiste nicht unterstützt wird.
if (!SystemTray.isSupported()) {
zurückkehren;
}
TaskTrayUtil.frame = targetFrame;
if (image == null) {
image = targetFrame.getIconImage();
}
if (menu == null) {
menu = defaultMenu;
}
TrayIcon = new TrayIcon(image, targetFrame.getTitle(), menu);
TrayIcon.setImageAutoSize(true);
TrayIcon.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
aktiv();
}
}
});
versuchen {
Tray.add(trayIcon);
} Catch (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Symbol aus der Taskleiste entfernen.
* Muss aufgerufen werden, wenn die Anwendung beendet wird.
*/
public static void removeTrayIcon() {
Tray.remove(trayIcon);
}
/**
* Lassen Sie das Taskleistensymbol blinken.
* @param msg, falls erforderlich, wenn auf das blinkende Symbol geklickt wird
* Legen Sie die anzuzeigende Nachricht fest.
*/
public static void onAndOffLight(Image lightImg, String msg) {
replaceImage(lightImg);
ChangeLightImgAdapter adap =
new TaskTrayUtil().new ChangeLightImgAdapter(msg);
TrayIcon.addMouseListener(adap);
frame.addWindowListener(adap);
}
/**
* Ändern Sie das Taskleistensymbol.
* @param image Nur ändern, wenn es vom aktuellen Symbol abweicht.
*/
public static void replaceImage(Image image) {
synchronisiert (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
TrayIcon.setImage(image);
}
}
}
/**
* Ändern Sie das Taskleistensymbol.
* *Wenn Sie das aus irgendeinem Grund blinkende Symbol wiederherstellen möchten,
* Es scheint nutzlos zu sein, es sei denn, Sie löschen es mit {@link SystemTray#remove(TrayIcon)}).
* @param image Nur ändern, wenn es vom aktuellen Symbol abweicht.
*/
public static void replaceImageWithDelete(Image image) {
synchronisiert (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
Tray.remove(trayIcon);
TrayIcon.setImage(image);
versuchen {
Tray.add(trayIcon);
} Catch (Ausnahme e) {
e.printStackTrace();
}
}
}
}
/**
* Zeigt eine Popup-Nachricht in der Taskleiste an.
* @param-Beschriftung
* @param-Text
*/
public static void displayMessage(String caption, String text) {
if (caption != null || text != null) {
TrayIcon.displayMessage(Beschriftung, Text,
TrayIcon.MessageType.INFO);
}
}
/**
* Verschieben Sie die Zielanwendung von der Taskleiste auf den Desktop
* Hol es raus.
*/
private static void active() {
// Den Frame-Status auf den Normalzustand zurücksetzen.
TaskTrayUtil.frame.setExtendedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(true);
TaskTrayUtil.frame.setVisible(true);
TaskTrayUtil.frame.setAlwaysOnTop(false);
}
/**
* Ereignis, das generiert wird, wenn auf das blinkende Symbol geklickt wird
* Listener-Klasse.
*/
Die Klasse ChangeLightImgAdapter implementiert WindowListener, MouseListener {
String lightImageText;
public ChangeLightImgAdapter(String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Wenn auf das Taskleistensymbol geklickt wird
* Popup-Nachricht anzeigen.
*/
public void mousePressed(MouseEvent e) {
TaskTrayUtil.displayMessage(null, lightImageText);
}
/**
* Blinkte, als die Zielanwendung aktiv wurde
* Return-Symbol.
*/
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) {}
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) {}
}
}