Di JavaBaki tugas(Baki sistemikon )Tampilan/Berkedip
Di JavaBaki tugas(Baki sistemBagian ini memperkenalkan kelas utilitas untuk menampilkan dan membuat ikon ) berkedip.
Kelas utilitas ditambahkan sebagai fitur baru di Java SE 6 Mustang. java.awt.SystemTray 、java.awt.TrayIcon Kita akan menggunakan sebuah kelas. Sebuah contoh aplikasi juga akan disediakan untuk membantu Anda memahami cara menggunakannya.
Fungsi baki sistem (baki tugas)
System tray (task tray) mengacu pada ikon-ikon kecil yang berjajar di pojok kanan bawah layar komputer. Java SE 6 menambahkan kelas-kelas berikut untuk mengaktifkan fungsionalitas system tray.
- java.awt.SystemTray
Kelas SystemTray merepresentasikan baki sistem pada desktop. - java.awt.TrayIcon
Objek TrayIcon mewakili ikon baki yang dapat ditambahkan ke baki sistem.
Cara membuat ikon berkedip
Anda dapat menggunakan situs web berikut untuk membuat ikon berkedip.
Unggah ikon lokal untuk membuat ikon berkedip.
https://www.bannerkoubou.com/anime/
Contoh Aplikasi

Aplikasi contoh ini menggunakan kelas utilitas baki sistem TaskTrayUtil untuk mengimplementasikan fungsi-fungsi berikut.
- Saat Anda menyalakannyaBaki tugasにikonMenampilkan.
- Mengklik [tombol berkedip] akanBaki tugasBuat ikonnya berkedip.
Pesan "Biarkan aku keluar dari sini!!" juga ditampilkan pada sebuah balon. - Mengklik tombol [Nonaktifkan] akan menghentikan ikon berkedip.
- Baki tugasKlik ikon dengan sekali klik kiri untuk menampilkan jendela utama ke desktop.
- Baki tugasKlik kanan ikon untuk menampilkan menu PopupMenu default.
- Saat jendela utama diminimalkanBaki tugasDisimpan di.
Akuisisi kode sumber
Kode sumber dapat diperoleh dari lokasi berikut. Jika Anda ingin mengkompilasinya, harap simpan juga ikon berikut di lokasi yang sama dengan kode sumber.
impor javax.swing.ImageIcon;
impor javax.swing.JButton;
impor javax.swing.JFrame;
impor javax.swing.JPanel;
impor javax.swing.SwingUtilities;
impor javax.swing.UIManager;
/**
* Menampilkan dan mengedipkan ikon task tray (system tray) menggunakan Java.
*
* ◆ Gambaran umum kelas ini
* Kelas TaskTray adalah utilitas untuk menangani task tray.
* Fitur-fitur berikut disediakan:
* Tampilkan ikon di task tray.
* Sebuah pesan pop-up akan muncul di task tray.
* Buat task tray berkedip.
*
* ◆ Cara penggunaan
* Berikan kelas JFrame target sebagai argumen ke metode berikut.
* ・createTray(JFrame targetFrame)
* ・createTray(final JFrame targetFrame, Image image, PopupMenu menu)
*
*/
kelas publik TaskTrayUtil {
privatestatic JFrame frame;
private static PopupMenu defaultMenu;
private static TrayIcon trayIcon;
private static SystemTray tray = SystemTray.getSystemTray();
private static Object INSTANCE_LOCK = new Object();
/**
* Contoh eksekusi
* @param args
*/
publik statis void main(String[] args) {
mencoba {
// Atur LookAndFeel ke Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// Ikon standar
final Image img = new ImageIcon(
TaskTrayUtil.class.getResource(
“tray_icon.gif”)).getImage();
bingkai JFrame akhir =
JFrame baru ("Menampilkan dan mengedipkan ikon di task tray");
bingkai.aturUkuran(300, 100);
frame.setIconImage(img);
// Minimalkan jendela ke task tray saat diminimalkan.
// Tambahkan kelas WindowListener seperti yang ditunjukkan.
frame.addWindowListener(new WindowAdapter() {
publik void windowIconified(WindowEvent e) {
frame.setVisible(false);
}
});
JPanel jPanel = new JPanel();
jPanel.setLayout(new FlowLayout());
jPanel.setSize(dimensi baru(219, 70));
// Ikon berkedip
Gambar akhir imgLight =
new ImageIcon(TaskTrayUtil.class.getResource(
“tray_icon_light.gif”)).getImage();
JButton lightButton = new JButton(“点滅”);
lightButton.addActionListener(new ActionListener(){
publik void actionPerformed(ActionEvent e) {
onAndOffLight(imgLight, null);
displayMessage("Pesan", "Biarkan aku keluar dari sini!!");
}
});
JButton cancelButton = new JButton(“解除”);
cancelButton.addActionListener(new ActionListener(){
publik void actionPerformed(ActionEvent e) {
replaceImageWithDelete(img);
}
});
jPanel.add(lightButton, null);
jPanel.add(cancelButton, null);
frame.add(jPanel);
// Pemrosesan akhir siklus.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Tampilkan bingkai di tengah layar.
frame.setLocationRelativeTo(null);
// Buat baki tugas.
TaskTrayUtil.createTray(frame);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
*/
statis {
buatMenuPopup();
}
/**
* Menghasilkan menu PopupMenu default untuk ditampilkan di task tray.
* Menu berikut tersedia.
* Hapus dari taskbar
* Hapus aplikasi target dari taskbar dan pindahkan ke desktop.
* Keluarkan.
* (Mengaktifkan jendela dan membawanya ke depan.)
* Ini akan mengakhiri aplikasi dan akan ditutup.
*/
private static void createPopupMenu() {
MenuItem getTrayItem = new MenuItem(“タスクトレイから取り出す”);
getTrayItem.addActionListener(new ActionListener() {
publik void actionPerformed(ActionEvent e) {
aktif();
}
});
MenuItem exitItem = new MenuItem(“終了”);
exitItem.addActionListener(new ActionListener() {
publik void actionPerformed(ActionEvent e) {
hapusIkonBaki();
TaskTrayUtil.frame.setVisible(false);
TaskTrayUtil.frame.dispose();
Sistem.keluar(0);
}
});
defaultMenu = new PopupMenu();
defaultMenu.add(getTrayItem);
defaultMenu.Add(exitItem);
}
/**
* Buat ikon tray dan tambahkan ke system tray.
* Pendengar untuk peristiwa yang terjadi pada ikon diatur ke targetFrame
Diatur ke *.
* Kejadian ini terjadi ketika ikon di bilah tugas diklik dua kali.
* Mengambil aplikasi target.
* @param targetFrame Aplikasi target
*/
publik statis void createTray(JFrame targetFrame) {
buatTray(targetFrame, null, null);
}
/**
* Buat ikon tray dan tambahkan ke system tray.
*
* @param targetFrame Aplikasi target
* @param image Gambar yang akan ditampilkan sebagai ikon baki sistem.
* Jika null, dapat diperoleh dari targetFrame menggunakan getIconImage().
* Gambar akan digunakan untuk tujuan ilustrasi.
* @param menu Menu pop-up yang akan ditampilkan di task tray.
* Jika null, PopupMenu default akan ditampilkan.
*/
publik statis void createTray(final JFrame targetFrame, Image image,
Menu PopupMenu) {
// Keluar jika baki sistem tidak didukung.
jika (!SystemTray.isSupported()) {
kembali;
}
TaskTrayUtil.frame = targetFrame;
jika (gambar == null) {
gambar = targetFrame.getIconImage();
}
jika (menu == null) {
menu = defaultMenu;
}
trayIcon = new TrayIcon(image, targetFrame.getTitle(), menu);
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(new MouseAdapter(){
publik void mouseClicked(MouseEvent e) {
jika (SwingUtilities.isLeftMouseButton(e)) {
aktif();
}
}
});
mencoba {
tray.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Hapus ikon dari taskbar.
* Fungsi ini harus dipanggil saat aplikasi dihentikan.
*/
publik statis void removeTrayIcon() {
tray.hapus(ikon nampan);
}
/**
* Buat ikon di taskbar berkedip.
* @param msg Jika perlu, saat ikon berkedip diklik
* Atur pesan yang akan ditampilkan.
*/
public static void onAndOffLight(Image lightImg, String msg) {
gantiGambar(gambar terang);
ChangeLightImgAdapter adap =
baru TaskTrayUtil().baru ChangeLightImgAdapter(msg);
trayIcon.addMouseListener(adap);
frame.addWindowListener(adap);
}
/**
* Ubah ikon di taskbar.
* @param image Ubah hanya jika ikon berbeda dari ikon saat ini.
*/
publik statis void replaceImage(Image image) {
disinkronkan (INSTANCE_LOCK) {
jika (!image.equals(trayIcon.getImage())) {
trayIcon.setImage(image);
}
}
}
/**
* Ubah ikon di taskbar.
* Jika ikon berkedip karena suatu alasan,
Sepertinya itu harus dihapus menggunakan {@link SystemTray#remove(TrayIcon)}).
* @param image Ubah hanya jika ikon berbeda dari ikon saat ini.
*/
publik statis void replaceImageWithDelete(Image image) {
disinkronkan (INSTANCE_LOCK) {
jika (!image.equals(trayIcon.getImage())) {
tray.hapus(ikon nampan);
trayIcon.setImage(image);
mencoba {
tray.add(trayIcon);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* Sebuah pesan pop-up akan muncul di taskbar.
* @param caption
* @param teks
*/
public static void displayMessage(String caption, String text) {
if (caption != null || text != null) {
trayIcon.displayMessage(caption, text,
TrayIcon.MessageType.INFO);
}
}
/**
* Hapus aplikasi target dari taskbar dan pindahkan ke desktop.
* Keluarkan.
*/
private static void active() {
// Mengembalikan status frame ke normal.
TaskTrayUtil.frame.setExendedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(true);
TaskTrayUtil.frame.setVisible(true);
TaskTrayUtil.frame.setAlwaysOnTop(false);
}
/**
* Acara yang akan dipicu saat ikon berkedip diklik.
* Kelas pendengar.
*/
kelas ChangeLightImgAdapter mengimplementasikan WindowListener, MouseListener {
String lightImageText;
publik ChangeLightImgAdapter(String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Saat ikon di bilah tugas diklik
* Menampilkan pesan pop-up.
*/
public void mousePressed(MouseEvent e) {
TaskTrayUtil.displayMessage(null, lightImageText);
}
/**
* Lampu berkedip ketika aplikasi target menjadi aktif.
* Pulihkan ikon.
*/
publik void windowActivated(WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(this);
TaskTrayUtil.trayIcon.removeMouseListener(this);
}
publik void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
publik void windowOpened(WindowEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
}
