Die Taskleiste auf dem Desktop bedeutet, dass das Programm beim Minimieren oder Drücken der Schaltfläche „Schließen“ nicht beendet wird, sondern im Aufgabenstatusbereich (Windows-System) minimiert wird Bereich gibt es Eingabeaufforderungen und andere Vorgänge. Bei Microsoft Windows heißt es „Taskbar-Statusbereich“, bei Gnome heißt es „Benachrichtigungsbereich“, bei KDE heißt es „System-Tray“. Die Taskleiste wird von allen auf dem Desktop ausgeführten Anwendungen gemeinsam genutzt.
Zur Implementierung wurden in jdk1.6 zwei neue Klassen hinzugefügt:
SystemTray und TrayIcon, das Folgende ist eine detaillierte Einführung:
SystemTray
Einführung in die Klasse:
Auf einigen Plattformen ist die Taskleiste möglicherweise nicht vorhanden oder wird nicht unterstützt. Überprüfen Sie daher zunächst mit SystemTray.isSupported(), ob das aktuelle System die Taskleiste unterstützt.
SystemTray kann ein oder mehrere TrayIcon enthalten, die mit der Methode „add(java.awt.TrayIcon)“ zum Tray hinzugefügt werden können. Wenn das Tray nicht mehr benötigt wird, verwenden Sie „remove(java.awt.TrayIcon)“.
Entfernen Sie es.
TrayIcon besteht aus einem Bild, einem Popup-Menü und einer Reihe zugehöriger Listener. Jede Java-Anwendung verfügt über eine SystemTray-Instanz, die es der Anwendung ermöglicht, während der Ausführung der Anwendung eine Verbindung zur Desktop-Taskleiste herzustellen.
SystemTray-Instanzen können über die Methode getSystemTray() abgerufen werden. Die Anwendung kann keinen eigenen SystemTray erstellen
Kopieren Sie den Codecode wie folgt:
import java.awt.AWTException;
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.WindowEvent;
import java.awt.event.WindowStateListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
javax.swing.Timer importieren;
import javax.swing.UIManager;
/**
*
* @Autor Mr.LiuTao
*/
Die öffentliche Klasse TrayByJdk erweitert JFrame und implementiert ActionListener{
privater JPanel-Bereich = null;
private JButton button = null; // Schaltfläche zum Starten des Taskleistensymbols
private JLabel label = null; // Wird verwendet, um Informationen darüber anzuzeigen, ob das System Fächer unterstützt
privates TrayIcon TrayIcon = null; // Tray-Symbol
privater Timer shanshuo = null;
privates ImageIcon icon1 = null;
privates ImageIcon icon2 = null;
private SystemTray Tray = null; //Instanz dieses Betriebssystem-Trays
boolean gengai = false;
//Verwenden Sie die Tray-Technologie von jdk1.6, um plattformübergreifende Anwendungen zu erreichen
public TrayByJdk() {
//super("Demonstration der Palettentechnologie");
icon1 = new ImageIcon("G://javaworks//eclipsework//shanzhaiQQClient//images//16.gif"); // Das Symbol, das in der Taskleiste angezeigt werden soll
icon2 = new ImageIcon("G://javaworks//eclipsework//shanzhaiQQClient//images//15.gif"); // Das Symbol, das in der Taskleiste angezeigt werden soll
versuchen {
// Setze LookAndFeel auf den Windows-Stil
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} Catch (Ausnahme ex) {
ex.printStackTrace();
}
pane = neues JPanel();
button = new JButton("In Fach verkleinern");
button.setEnabled(false);
label = new JLabel("Dieses Betriebssystem unterstützt das Fach nicht");
pane.add(label);
pane.add(button);
//Bestimmen Sie, ob das Fach unterstützt wird
if (SystemTray.isSupported()) {
this.tray();
}
shanshuo = new Timer(1000,this);
shanshuo.start();
this.getContentPane().add(pane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.addWindowStateListener(new WindowStateListener () {
public void windowStateChanged(WindowEvent state) {
if(state.getNewState() == 1 || state.getNewState() == 7) {
yinca();
}
}
});
this.setVisible(false);
System.out.println("=============="+this.isVisible());
}
/**
* Palettenbezogene Codes
*/
privates Leerfach() {
label.setText("Dieses Betriebssystem unterstützt Tray");
button.setEnabled(true);
Tray = SystemTray.getSystemTray(); // Die Tray-Instanz dieses Betriebssystems abrufen
//ImageIcon icon = new ImageIcon("tray.gif"); //Das Symbol, das in der Taskleiste angezeigt werden soll
PopupMenu pop = new PopupMenu(); // Erstellen Sie ein Popup-Menü mit der rechten Maustaste
MenuItem show = new MenuItem("Fenster anzeigen");
MenuItem exit = new MenuItem("Präsentation beenden");
MenuItem-Autor = neues MenuItem("Author");
/**
* TrayIcon hat drei Strukturen
* TrayIcon(Image image) wird mit „icon“ erstellt
* TrayIcon(Image image, String tooltip) besteht aus „icon“ und „ToolTip“
* TrayIcon(Image image, String tooltip, PopupMenu popup) verwendet „icon“, „ToolTip“ und „popup menu“, um ein Tray-Icon zu erstellen
*/
TrayIcon = new TrayIcon(icon1.getImage(), "Demonstration der Tray-Technologie", pop);
// Nach dem Klicken auf diese Schaltfläche wird das Fenster geschlossen und das Taskleistensymbol zur Taskleiste hinzugefügt.
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
versuchen {
Tray.add(trayIcon); // Das Taskleistensymbol zur Taskleisteninstanz des Systems hinzufügen
setVisible(false); // Das Fenster unsichtbar machen
} Catch (AWTException ex) {
ex.printStackTrace();
}
}
});
/**
* Fügen Sie einen Maus-Listener hinzu. Wenn die Maus auf das Taskleistensymbol doppelklickt, wird das Fenster standardmäßig angezeigt
*/
TrayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) { // Doppelklick mit der Maus
Tray.remove(trayIcon); // Entfernen Sie das Taskleistensymbol aus der Taskleisteninstanz des Systems
setVisible(true); // Anzeigefenster
}
}
});
show.addActionListener(new ActionListener() { // Klicken Sie auf das Menü „Fenster anzeigen“, um das Fenster anzuzeigen
public void actionPerformed(ActionEvent e) {
Tray.remove(trayIcon); // Entfernen Sie das Taskleistensymbol aus der Taskleisteninstanz des Systems
setVisible(true); // Anzeigefenster
}
});
exit.addActionListener(new ActionListener() { // Klicken Sie auf das Menü „Demo beenden“, um das Programm zu beenden
public void actionPerformed(ActionEvent e) {
System.exit(0); //Programm verlassen
}
});
author.addActionListener(new ActionListener() { // Klicken Sie auf das Menü „Demo beenden“, um das Programm zu beenden
public void actionPerformed(ActionEvent e) {
showMessage();
}
});
pop.add(show);
pop.add(exit);
pop.add(Autor);
}
/**
* Informationen anzeigen
*/
private void showMessage() {
JOptionPane.showMessageDialog(this, new JLabel("Dies ist eine Taskleiste"), "Message", JOptionPane.INFORMATION_MESSAGE);
}
public static void main(String[] args) {
new TrayByJdk().yinca();
}
public void yinca(){
versuchen {
Tray.add(trayIcon);
} Catch (AWTException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
} // Das Taskleistensymbol zur Taskleisteninstanz des Systems hinzufügen
setVisible(false); // Das Fenster unsichtbar machen
}
@Override
public void actionPerformed(ActionEvent arg0) {
if(!gengai){
TrayIcon.setImage(icon2.getImage());
gengai = wahr;
}anders{
TrayIcon.setImage(icon1.getImage());
gengai = falsch;
}
}
}