{"id":906,"date":"2019-02-17T18:12:55","date_gmt":"2019-02-17T09:12:55","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=906"},"modified":"2019-07-03T00:05:55","modified_gmt":"2019-07-02T15:05:55","slug":"ikon-baki-berkedip","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/id\/blog\/java\/trayicon-blink","title":{"rendered":"Tampilkan\/kedipkan ikon Java di taskbar."},"content":{"rendered":"<h2><a name=\"0\">Di Java<strong>Baki tugas<\/strong>\uff08<strong>Baki sistem<\/strong>ikon )<strong>Tampilan\/Berkedip<\/strong><\/a><\/h2>\n<p>Di Java<strong>Baki tugas<\/strong>\uff08<strong>Baki sistem<\/strong>Bagian ini memperkenalkan kelas utilitas untuk menampilkan dan membuat ikon ) berkedip.<\/p>\n<p>Kelas utilitas ditambahkan sebagai fitur baru di Java SE 6 Mustang. <strong>java.awt.SystemTray<\/strong> \u3001<strong>java.awt.TrayIcon<\/strong> Kita akan menggunakan sebuah kelas. Sebuah contoh aplikasi juga akan disediakan untuk membantu Anda memahami cara menggunakannya.<\/p>\n<h3><a name=\"1\">Fungsi baki sistem (baki tugas)<\/a><\/h3>\n<p>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.<\/p>\n<ul>\n<li><strong>java.awt.SystemTray<\/strong><br \/>\nKelas SystemTray merepresentasikan baki sistem pada desktop.<\/li>\n<li><strong>java.awt.TrayIcon<\/strong><br \/>\nObjek TrayIcon mewakili ikon baki yang dapat ditambahkan ke baki sistem.<\/li>\n<\/ul>\n<h3>Cara membuat ikon berkedip<\/h3>\n<p>Anda dapat menggunakan situs web berikut untuk membuat ikon berkedip.<br \/>Unggah ikon lokal untuk membuat ikon berkedip.<br \/>\n<a href=\"https:\/\/www.bannerkoubou.com\/anime\/\" target=\"_blank\"><strong>https:\/\/www.bannerkoubou.com\/anime\/<\/strong><\/a><\/p>\n<h2 class=\"common_title\"><a name=\"3\">Contoh Aplikasi<\/a><\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/chat-messenger.com\/images\/task_tray.jpg\" alt=\"Baki tugas Baki sistem java.awt.SystemTray java.awt.TrayIcon\" border=\"0\"><br \/>\n<br clear=\"all\"><\/p>\n<p>\nAplikasi contoh ini menggunakan kelas utilitas baki sistem TaskTrayUtil untuk mengimplementasikan fungsi-fungsi berikut.<\/p>\n<ol>\n<li>Saat Anda menyalakannya<strong>Baki tugas<\/strong>\u306b<strong>ikon<\/strong>Menampilkan.\n<\/li>\n<li>Mengklik [tombol berkedip] akan<strong>Baki tugas<\/strong>Buat ikonnya berkedip.<br \/>\n\tPesan &quot;Biarkan aku keluar dari sini!!&quot; juga ditampilkan pada sebuah balon.<\/li>\n<li>Mengklik tombol [Nonaktifkan] akan menghentikan ikon berkedip.<\/li>\n<li><strong>Baki tugas<\/strong>Klik ikon dengan sekali klik kiri untuk menampilkan jendela utama ke desktop.<\/li>\n<li><strong>Baki tugas<\/strong>Klik kanan ikon untuk menampilkan menu PopupMenu default.<\/li>\n<li>Saat jendela utama diminimalkan<strong>Baki tugas<\/strong>Disimpan di.<\/li>\n<\/ol>\n<h2 class=\"common_title\"><a name=\"4\">Akuisisi kode sumber<\/a><\/h2>\n<p><script type=\"text\/javascript\" src=\"https:\/\/chat-messenger.com\/js\/common.js?dd12sssas2223\" charset=\"UTF-8\"><\/script><br \/>\n<script type=\"text\/javascript\"> writePR(); <\/script><\/p>\n<p>Kode sumber dapat diperoleh dari lokasi berikut. Jika Anda ingin mengkompilasinya, harap simpan juga ikon berikut di lokasi yang sama dengan kode sumber.<\/p>\n<ul>\n<li><strong>Ikon Normal<\/strong>\u3000<a href=\"https:\/\/chat-messenger.com\/images\/tray_icon.gif\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/chat-messenger.com\/images\/tray_icon.gif\" alt=\"\" border=\"0\"><\/a><\/li>\n<li><strong>Ikon berkedip<\/strong>\u3000<a href=\"https:\/\/chat-messenger.com\/images\/tray_icon_light.gif\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/chat-messenger.com\/images\/tray_icon_light.gif\" alt=\"\" border=\"0\"><\/a><\/li>\n<\/ul>\n<p><textarea readonly=\"readonly\" style=\"font-size: 13px;height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">import java.awt.AWTException;<br \/>\nimport java.awt.Dimension;<br \/>\nimport java.awt.FlowLayout;<br \/>\nimport java.awt.Image;<br \/>\nimport java.awt.MenuItem;<br \/>\nimport java.awt.PopupMenu;<br \/>\nimport java.awt.SystemTray;<br \/>\nimport java.awt.TrayIcon;<br \/>\nimport java.awt.event.ActionEvent;<br \/>\nimport java.awt.event.ActionListener;<br \/>\nimport java.awt.event.MouseAdapter;<br \/>\nimport java.awt.event.MouseEvent;<br \/>\nimport java.awt.event.MouseListener;<br \/>\nimport java.awt.event.WindowAdapter;<br \/>\nimport java.awt.event.WindowEvent;<br \/>\nimport java.awt.event.WindowListener;<\/p>\n<p>impor javax.swing.ImageIcon;<br \/>\nimpor javax.swing.JButton;<br \/>\nimpor javax.swing.JFrame;<br \/>\nimpor javax.swing.JPanel;<br \/>\nimpor javax.swing.SwingUtilities;<br \/>\nimpor javax.swing.UIManager;<\/p>\n<p>\/**<br \/>\n * Menampilkan dan mengedipkan ikon task tray (system tray) menggunakan Java.<br \/>\n *<br \/>\n * \u25c6 Gambaran umum kelas ini<br \/>\n * Kelas TaskTray adalah utilitas untuk menangani task tray.<br \/>\n * Fitur-fitur berikut disediakan:<br \/>\n * Tampilkan ikon di task tray.<br \/>\n * Sebuah pesan pop-up akan muncul di task tray.<br \/>\n * Buat task tray berkedip.<br \/>\n *<br \/>\n * \u25c6 Cara penggunaan<br \/>\n * Berikan kelas JFrame target sebagai argumen ke metode berikut.<br \/>\n * \u30fbcreateTray(JFrame targetFrame)<br \/>\n * \u30fbcreateTray(final JFrame targetFrame, Image image, PopupMenu menu)<br \/>\n *<br \/>\n *\/<br \/>\nkelas publik TaskTrayUtil {<br \/>\n    privatestatic JFrame frame;<br \/>\n    private static PopupMenu defaultMenu;<br \/>\n    private static TrayIcon trayIcon;<br \/>\n    private static SystemTray tray = SystemTray.getSystemTray();<br \/>\n    private static Object INSTANCE_LOCK = new Object();<\/p>\n<p>    \/**<br \/>\n     * Contoh eksekusi<br \/>\n     * @param args<br \/>\n     *\/<br \/>\n    publik statis void main(String[] args) {<br \/>\n      mencoba {<br \/>\n          \/\/ Atur LookAndFeel ke Windows<br \/>\n          UIManager.setLookAndFeel(<br \/>\n                  UIManager.getSystemLookAndFeelClassName());<br \/>\n          \/\/ Ikon standar<br \/>\n          final Image img = new ImageIcon(<br \/>\n                  TaskTrayUtil.class.getResource(<br \/>\n                          \u201ctray_icon.gif\u201d)).getImage();<br \/>\n          bingkai JFrame akhir =<br \/>\n              JFrame baru (&quot;Menampilkan dan mengedipkan ikon di task tray&quot;);<br \/>\n          bingkai.aturUkuran(300, 100);<br \/>\n          frame.setIconImage(img);<br \/>\n          \/\/ Minimalkan jendela ke task tray saat diminimalkan.<br \/>\n          \/\/ Tambahkan kelas WindowListener seperti yang ditunjukkan.<br \/>\n          frame.addWindowListener(new WindowAdapter() {<br \/>\n              publik void windowIconified(WindowEvent e) {<br \/>\n                  frame.setVisible(false);<br \/>\n              }<br \/>\n          });<\/p>\n<p>          JPanel jPanel = new JPanel();<br \/>\n          jPanel.setLayout(new FlowLayout());<br \/>\n          jPanel.setSize(dimensi baru(219, 70));<br \/>\n          \/\/ Ikon berkedip<br \/>\n          Gambar akhir imgLight =<br \/>\n              new ImageIcon(TaskTrayUtil.class.getResource(<br \/>\n                      \u201ctray_icon_light.gif\u201d)).getImage();<br \/>\n          JButton lightButton = new JButton(&#8220;\u70b9\u6ec5&#8221;);<br \/>\n          lightButton.addActionListener(new ActionListener(){<br \/>\n              publik void actionPerformed(ActionEvent e) {<br \/>\n                  onAndOffLight(imgLight, null);<br \/>\n                  displayMessage(&quot;Pesan&quot;, &quot;Biarkan aku keluar dari sini!!&quot;);<br \/>\n              }<br \/>\n          });<br \/>\n          JButton cancelButton = new JButton(&#8220;\u89e3\u9664&#8221;);<br \/>\n          cancelButton.addActionListener(new ActionListener(){<br \/>\n              publik void actionPerformed(ActionEvent e) {<br \/>\n                  replaceImageWithDelete(img);<br \/>\n              }<br \/>\n          });<br \/>\n          jPanel.add(lightButton, null);<br \/>\n          jPanel.add(cancelButton, null);<br \/>\n          frame.add(jPanel);<br \/>\n          \/\/ Pemrosesan akhir siklus.<br \/>\n          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br \/>\n          \/\/ Tampilkan bingkai di tengah layar.<br \/>\n          frame.setLocationRelativeTo(null);<br \/>\n          \/\/ Buat baki tugas.<br \/>\n          TaskTrayUtil.createTray(frame);<br \/>\n          frame.setVisible(true);<\/p>\n<p>      } catch (Exception e) {<br \/>\n          e.printStackTrace();<br \/>\n      }<br \/>\n    }<br \/>\n    \/**<br \/>\n     *<br \/>\n     *\/<br \/>\n    statis {<br \/>\n        buatMenuPopup();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Menghasilkan menu PopupMenu default untuk ditampilkan di task tray.<br \/>\n     * Menu berikut tersedia.<br \/>\n     * Hapus dari taskbar<br \/>\n     * Hapus aplikasi target dari taskbar dan pindahkan ke desktop.<br \/>\n     * Keluarkan.<br \/>\n     * (Mengaktifkan jendela dan membawanya ke depan.)<br \/>\n     * Ini akan mengakhiri aplikasi dan akan ditutup.<br \/>\n     *\/<br \/>\n    private static void createPopupMenu() {<br \/>\n        MenuItem getTrayItem = new MenuItem(&#8220;\u30bf\u30b9\u30af\u30c8\u30ec\u30a4\u304b\u3089\u53d6\u308a\u51fa\u3059&#8221;);<br \/>\n        getTrayItem.addActionListener(new ActionListener() {<br \/>\n            publik void actionPerformed(ActionEvent e) {<br \/>\n                aktif();<br \/>\n            }<br \/>\n        });<br \/>\n        MenuItem exitItem = new MenuItem(&#8220;\u7d42\u4e86&#8221;);<br \/>\n        exitItem.addActionListener(new ActionListener() {<br \/>\n            publik void actionPerformed(ActionEvent e) {<br \/>\n                hapusIkonBaki();<br \/>\n                TaskTrayUtil.frame.setVisible(false);<br \/>\n                TaskTrayUtil.frame.dispose();<br \/>\n                Sistem.keluar(0);<br \/>\n            }<br \/>\n        });<br \/>\n        defaultMenu = new PopupMenu();<br \/>\n        defaultMenu.add(getTrayItem);<br \/>\n        defaultMenu.Add(exitItem);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Buat ikon tray dan tambahkan ke system tray.<br \/>\n     * Pendengar untuk peristiwa yang terjadi pada ikon diatur ke targetFrame<br \/>\n     Diatur ke *.<br \/>\n     * Kejadian ini terjadi ketika ikon di bilah tugas diklik dua kali.<br \/>\n     * Mengambil aplikasi target.<br \/>\n     * @param targetFrame Aplikasi target<br \/>\n     *\/<br \/>\n    publik statis void createTray(JFrame targetFrame) {<br \/>\n        buatTray(targetFrame, null, null);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Buat ikon tray dan tambahkan ke system tray.<br \/>\n     *<br \/>\n     * @param targetFrame Aplikasi target<br \/>\n     * @param image Gambar yang akan ditampilkan sebagai ikon baki sistem.<br \/>\n     * Jika null, dapat diperoleh dari targetFrame menggunakan getIconImage().<br \/>\n     * Gambar akan digunakan untuk tujuan ilustrasi.<br \/>\n     * @param menu Menu pop-up yang akan ditampilkan di task tray.<br \/>\n     * Jika null, PopupMenu default akan ditampilkan.<br \/>\n     *\/<br \/>\n    publik statis void createTray(final JFrame targetFrame, Image image,<br \/>\n            Menu PopupMenu) {<br \/>\n        \/\/ Keluar jika baki sistem tidak didukung.<br \/>\n        jika (!SystemTray.isSupported()) {<br \/>\n            kembali;<br \/>\n        }<br \/>\n        TaskTrayUtil.frame = targetFrame;<br \/>\n        jika (gambar == null) {<br \/>\n            gambar = targetFrame.getIconImage();<br \/>\n        }<br \/>\n        jika (menu == null) {<br \/>\n            menu = defaultMenu;<br \/>\n        }<br \/>\n        trayIcon = new TrayIcon(image, targetFrame.getTitle(), menu);<br \/>\n        trayIcon.setImageAutoSize(true);<br \/>\n        trayIcon.addMouseListener(new MouseAdapter(){<br \/>\n            publik void mouseClicked(MouseEvent e) {<br \/>\n                jika (SwingUtilities.isLeftMouseButton(e)) {<br \/>\n                    aktif();<br \/>\n                }<br \/>\n            }<br \/>\n        });<br \/>\n        mencoba {<br \/>\n            tray.add(trayIcon);<br \/>\n        } catch (AWTException e1) {<br \/>\n            e1.printStackTrace();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Hapus ikon dari taskbar.<br \/>\n     * Fungsi ini harus dipanggil saat aplikasi dihentikan.<br \/>\n     *\/<br \/>\n    publik statis void removeTrayIcon() {<br \/>\n        tray.hapus(ikon nampan);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Buat ikon di taskbar berkedip.<br \/>\n     * @param msg Jika perlu, saat ikon berkedip diklik<br \/>\n     * Atur pesan yang akan ditampilkan.<br \/>\n     *\/<br \/>\n    public static void onAndOffLight(Image lightImg, String msg) {<br \/>\n        gantiGambar(gambar terang);<br \/>\n        ChangeLightImgAdapter adap =<br \/>\n            baru TaskTrayUtil().baru ChangeLightImgAdapter(msg);<br \/>\n        trayIcon.addMouseListener(adap);<br \/>\n        frame.addWindowListener(adap);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ubah ikon di taskbar.<br \/>\n     * @param image Ubah hanya jika ikon berbeda dari ikon saat ini.<br \/>\n     *\/<br \/>\n    publik statis void replaceImage(Image image) {<br \/>\n        disinkronkan (INSTANCE_LOCK) {<br \/>\n            jika (!image.equals(trayIcon.getImage())) {<br \/>\n                trayIcon.setImage(image);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ubah ikon di taskbar.<br \/>\n     * Jika ikon berkedip karena suatu alasan,<br \/>\n     Sepertinya itu harus dihapus menggunakan {@link SystemTray#remove(TrayIcon)}).<br \/>\n     * @param image Ubah hanya jika ikon berbeda dari ikon saat ini.<br \/>\n     *\/<br \/>\n    publik statis void replaceImageWithDelete(Image image) {<br \/>\n        disinkronkan (INSTANCE_LOCK) {<br \/>\n            jika (!image.equals(trayIcon.getImage())) {<br \/>\n                tray.hapus(ikon nampan);<br \/>\n                trayIcon.setImage(image);<br \/>\n                mencoba {<br \/>\n                    tray.add(trayIcon);<br \/>\n                } catch (Exception e) {<br \/>\n                    e.printStackTrace();<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Sebuah pesan pop-up akan muncul di taskbar.<br \/>\n     * @param caption<br \/>\n     * @param teks<br \/>\n     *\/<br \/>\n    public static void displayMessage(String caption, String text) {<br \/>\n        if (caption != null || text != null) {<br \/>\n            trayIcon.displayMessage(caption, text,<br \/>\n                    TrayIcon.MessageType.INFO);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Hapus aplikasi target dari taskbar dan pindahkan ke desktop.<br \/>\n     * Keluarkan.<br \/>\n     *\/<br \/>\n    private static void active() {<br \/>\n        \/\/ Mengembalikan status frame ke normal.<br \/>\n        TaskTrayUtil.frame.setExendedState(JFrame.NORMAL);<br \/>\n        TaskTrayUtil.frame.setAlwaysOnTop(true);<br \/>\n        TaskTrayUtil.frame.setVisible(true);<br \/>\n        TaskTrayUtil.frame.setAlwaysOnTop(false);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Acara yang akan dipicu saat ikon berkedip diklik.<br \/>\n     * Kelas pendengar.<br \/>\n     *\/<br \/>\n    kelas ChangeLightImgAdapter mengimplementasikan WindowListener, MouseListener {<br \/>\n        String lightImageText;<\/p>\n<p>        publik ChangeLightImgAdapter(String lightImageText) {<br \/>\n            this.lightImageText = lightImageText;<br \/>\n        }<\/p>\n<p>        \/**<br \/>\n         * Saat ikon di bilah tugas diklik<br \/>\n         * Menampilkan pesan pop-up.<br \/>\n         *\/<br \/>\n        public void mousePressed(MouseEvent e) {<br \/>\n            TaskTrayUtil.displayMessage(null, lightImageText);<br \/>\n        }<\/p>\n<p>        \/**<br \/>\n         * Lampu berkedip ketika aplikasi target menjadi aktif.<br \/>\n         * Pulihkan ikon.<br \/>\n         *\/<br \/>\n        publik void windowActivated(WindowEvent e) {<br \/>\n            TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame<br \/>\n                    .getIconImage());<br \/>\n            TaskTrayUtil.frame.removeWindowListener(this);<br \/>\n            TaskTrayUtil.trayIcon.removeMouseListener(this);<br \/>\n        }<\/p>\n<p>        publik void windowClosed(WindowEvent e) {}<\/p>\n<p>        public void windowClosing(WindowEvent e) {}<\/p>\n<p>        public void windowDeactivated(WindowEvent e) {}<\/p>\n<p>        public void windowDeiconified(WindowEvent e) {}<\/p>\n<p>        public void windowIconified(WindowEvent e) {}<\/p>\n<p>        publik void windowOpened(WindowEvent e) {}<\/p>\n<p>        public void mouseClicked(MouseEvent e) {}<\/p>\n<p>        public void mouseEntered(MouseEvent e) {}<\/p>\n<p>        public void mouseExited(MouseEvent e) {}<\/p>\n<p>        public void mouseReleased(MouseEvent e) {}<br \/>\n    }<br \/>\n}<br \/>\n<\/textarea><\/p>","protected":false},"excerpt":{"rendered":"<p>Java\u3067\u30bf\u30b9\u30af\u30c8\u30ec\u30a4\uff08\u30b7\u30b9\u30c6\u30e0\u30c8\u30ec\u30a4\uff09\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u8868\u793a\u30fb\u70b9\u6ec5 Java\u3067\u30bf\u30b9\u30af\u30c8\u30ec\u30a4\uff08\u30b7\u30b9\u30c6\u30e0\u30c8\u30ec\u30a4\uff09\u306e\u30a2\u30a4 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","footnotes":""},"categories":[19],"tags":[],"class_list":["post-906","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/comments?post=906"}],"version-history":[{"count":14,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/906\/revisions"}],"predecessor-version":[{"id":3679,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/906\/revisions\/3679"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/media?parent=906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/categories?post=906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/tags?post=906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}