di Jawabaki tugas(baki sistem) ikonTampilan/berkedip
di Jawabaki tugas(baki sistem) ikon ditampilkan dan berkedip.
Kelas utilitas adalah fitur baru yang ditambahkan di Java SE 6 Mustang. java.awt.SystemTray ,,java.awt.TrayIcon Gunakan kelas. Kami juga akan memperkenalkan contoh aplikasi sehingga Anda dapat memahami cara menggunakannya.
Fungsi baki sistem (task tray).
System tray (baki tugas) adalah deretan ikon kecil yang terletak di kanan bawah layar komputer Anda. Di Java SE 6, kelas-kelas berikut telah ditambahkan untuk menggunakan fungsionalitas baki sistem.
- java.awt.SystemTray
Kelas SystemTray mewakili baki sistem desktop. - java.awt.TrayIcon
Objek TrayIcon mewakili ikon baki yang dapat ditambahkan ke baki sistem.
Cara membuat ikon berkedip
Anda mungkin ingin menggunakan situs berikut untuk membuat ikon berkedip.
Buat ikon berkedip dengan mengunggah ikon lokal.
https://www.bannerkoubou.com/anime/
contoh aplikasi
Contoh aplikasi menggunakan kelas utilitas baki sistem TaskTrayUtil untuk mengimplementasikan fungsi berikut.
- Kapan dimulaibaki tugaskeikonMenunjukkan.
- Klik [tombol berkedip] untukbaki tugasIkon akan berkedip.
Balon tersebut juga menampilkan pesan "Keluarkan aku dari sini!!" - Klik [tombol Batal] untuk membatalkan kedipan ikon.
- baki tugasKlik kiri sekali pada ikon untuk menampilkan jendela utama ke desktop.
- baki tugasKlik kanan ikon tersebut untuk menampilkan menu PopupMenu default.
- Ketika jendela utama diminimalkanbaki tugasDisimpan di.
Dapatkan kode sumber
Kode sumber dapat diperoleh dari bawah. Selain itu, saat kompilasi, harap simpan 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/mengedipkan ikon baki tugas (system tray) di Java.
*
* ◆ Ikhtisar kelas ini
* Kelas TaskTray adalah utilitas yang menangani baki tugas.
* Menyediakan fitur-fitur berikut:
* ・Menampilkan ikon di baki tugas.
* - Menampilkan pesan pop-up di baki tugas.
* - Membuat baki tugas berkedip.
*
* ◆ Cara menggunakan
* Teruskan kelas JFrame target ke argumen metode di bawah.
* ・buat Baki(JFrame targetFrame)
* ・createTray (target JFrame akhir, Gambar gambar, menu PopupMenu)
*
*/
kelas publik TaskTrayUtil {
bingkai JFrame statis pribadi;
pribadi statis PopupMenu defaultMenu;
TrayIcon statis pribadi trayIcon;
baki SystemTray statis pribadi = SystemTray.getSystemTray();
Objek statis pribadi INSTANCE_LOCK = Objek baru();
/**
* Contoh eksekusi
* @param argumen
*/
public static void main(String[] args) {
mencoba {
// Setel LookAndFeel ke Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// ikon biasa
Gambar akhir img = Ikon Gambar baru(
TaskTrayUtil.kelas.getResource(
“tray_icon.gif”)).getImage();
bingkai JFrame akhir =
new JFrame("Tampilkan/berkedip ikon di baki tugas");
bingkai.setSize(300, 100);
bingkai.setIconImage(img);
// Simpan di baki tugas saat jendela diminimalkan
// Tambahkan kelas WindowListener seperti yang ditunjukkan.
frame.addWindowListener(WindowAdapter baru() {
jendela kekosongan publikIkonifikasi(WindowEvent e) {
frame.setVisible(salah);
}
});
JPanel jPanel = JPanel baru();
jPanel.setLayout(FlowLayout baru());
jPanel.setSize(Dimensi baru(219, 70));
// ikon berkedip
Gambar akhir imgLight =
ImageIcon baru(TaskTrayUtil.class.getResource(
“tray_icon_light.gif”)).getImage();
JButton lightButton = JButton baru("berkedip");
lightButton.addActionListener(ActionListener baru(){
public void actionPerformed(ActionEvent e) {
onAndOffLight(imgLight, null);
displayMessage(“Pesan”, “Keluarkan aku dari sini!!”);
}
});
JButton cancelButton = JButton baru("batal");
cancelButton.addActionListener(ActionListener baru(){
public void actionPerformed(ActionEvent e) {
replaceImageWithDelete(img);
}
});
jPanel.add(lightButton, null);
jPanel.tambahkan(cancelButton, null);
frame.add(jPanel);
// Akhiri pemrosesan.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Menampilkan bingkai di tengah layar.
frame.setLocationRelativeTo(null);
// Buat baki tugas.
TaskTrayUtil.createTray(bingkai);
frame.setVisible(benar);
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
/**
*
*/
statis {
buatPopupMenu();
}
/**
* Menghasilkan menu PopupMenu default untuk ditampilkan di baki tugas.
*Menu berikut tersedia.
* ・"Hapus dari baki tugas"
* Pindahkan aplikasi target dari task tray ke desktop
* Membawanya keluar.
* (Aktifkan jendela dan bawa ke depan.)
* - Hentikan aplikasi yang akan dihentikan.
*/
pribadi statis kekosongan createPopupMenu() {
MenuItem getTrayItem = new MenuItem("Hapus dari baki tugas");
getTrayItem.addActionListener(ActionListener baru() {
public void actionPerformed(ActionEvent e) {
aktif();
}
});
MenuItem exitItem = MenuItem baru("Keluar");
exitItem.addActionListener(ActionListener baru() {
public void actionPerformed(ActionEvent e) {
hapusTrayIcon();
TaskTrayUtil.frame.setVisible(salah);
TaskTrayUtil.frame.dispose();
Sistem.keluar(0);
}
});
defaultMenu = Menu Popup baru();
defaultMenu.tambahkan(getTrayItem);
defaultMenu.tambahkan(exitItem);
}
/**
* Buat ikon baki dan tambahkan ke baki sistem.
* Tetapkan pendengar untuk peristiwa yang terjadi pada ikon ke targetFrame
Mulai *.
* Event disini adalah ketika icon tray di klik dua kali.
* Ekstrak aplikasi target.
* @param targetFrame Aplikasi target
*/
public static void createTray(JFrame targetFrame) {
createTray(targetFrame, null, null);
}
/**
* Buat ikon baki dan tambahkan ke baki sistem.
*
* @param targetFrame Aplikasi target
* @param image Gambar gambar untuk ditampilkan pada ikon baki.
* Jika null, dapat diperoleh dari targetFrame dengan getIconImage()
* Gunakan gambar gambar.
* @param menu PopupMenu untuk ditampilkan di baki tugas.
* Jika null, tampilkan PopupMenu default.
*/
public static void createTray(targetFrame JFrame akhir, Gambar gambar,
Menu Menu Popup) {
// Keluar jika baki sistem tidak didukung.
if (!SystemTray.isSupported()) {
kembali;
}
TaskTrayUtil.frame = targetFrame;
jika (gambar == nol) {
gambar = targetFrame.getIconImage();
}
jika (menu == batal) {
menu = defaultMenu;
}
trayIcon = TrayIcon baru(gambar, targetFrame.getTitle(), menu);
trayIcon.setImageAutoSize(benar);
trayIcon.addMouseListener(MouseAdapter baru(){
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
aktif();
}
}
});
mencoba {
baki.tambahkan(trayIcon);
} tangkapan (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Hapus ikon dari baki tugas.
* Harus dipanggil saat aplikasi keluar.
*/
public static void hapusTrayIcon() {
baki.hapus(trayIcon);
}
/**
* Membuat ikon baki tugas berkedip.
* @param pesan jika perlu saat ikon berkedip diklik
* Atur pesan untuk ditampilkan.
*/
public static void onAndOffLight(Gambar lightImg, Pesan string) {
replaceImage(lightImg);
ChangeLightImgAdapter adap =
new TaskTrayUtil().new ChangeLightImgAdapter(pesan);
trayIcon.addMouseListener(adap);
frame.addWindowListener(adap);
}
/**
* Ubah ikon baki tugas.
* @param image Ubah hanya jika berbeda dari ikon saat ini.
*/
public static void replaceImage(Gambar gambar) {
disinkronkan (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
trayIcon.setImage(gambar);
}
}
}
/**
* Ubah ikon baki tugas.
* *Jika Anda ingin mengembalikan ikon yang berkedip karena alasan tertentu,
* Tampaknya tidak ada gunanya kecuali Anda menghapusnya dengan {@link SystemTray#remove(TrayIcon)}).
* @param image Ubah hanya jika berbeda dari ikon saat ini.
*/
public static void replaceImageWithDelete(Gambar gambar) {
disinkronkan (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
baki.hapus(trayIcon);
trayIcon.setImage(gambar);
mencoba {
baki.tambahkan(trayIcon);
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
}
}
/**
* Menampilkan pesan pop-up di baki tugas.
* keterangan @param
* @param teks
*/
public static void displayMessage(String caption, String text) {
if (keterangan != null || teks != null) {
trayIcon.displayMessage(keterangan, teks,
TrayIcon.MessageType.INFO);
}
}
/**
* Pindahkan aplikasi target dari task tray ke desktop
* Membawanya keluar.
*/
pribadi statis kekosongan aktif() {
// Mengembalikan status frame ke normal.
TaskTrayUtil.frame.setExendedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(benar);
TaskTrayUtil.frame.setVisible(benar);
TaskTrayUtil.frame.setAlwaysOnTop(false);
}
/**
* Acara yang akan dihasilkan ketika ikon berkedip diklik
* Kelas pendengar.
*/
kelas ChangeLightImgAdapter mengimplementasikan WindowListener, MouseListener {
String lightImageText;
publik ChangeLightImgAdapter(String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Saat ikon baki tugas diklik
* Tampilkan pesan popup.
*/
public void mousePressed(MouseEvent e) {
TaskTrayUtil.displayMessage(null, lightImageText);
}
/**
* Berkedip saat aplikasi target aktif
* Kembalikan ikon.
*/
jendela kekosongan publikDiaktifkan(WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(ini);
TaskTrayUtil.trayIcon.removeMouseListener(ini);
}
jendela kekosongan publikTertutup(WindowEvent e) {}
penutupan jendela kekosongan publik(WindowEvent e) {}
jendela kekosongan publikDinonaktifkan(WindowEvent e) {}
jendela kekosongan publikDeiconified(WindowEvent e) {}
jendela kekosongan publikIkonifikasi(WindowEvent e) {}
jendela kekosongan publikTerbuka(WindowEvent e) {}
kekosongan publik mouseClicked(MouseEvent e) {}
kekosongan publik mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
}