{"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":"trayicon-blink","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/id\/blog\/java\/ikon-baki-berkedip","title":{"rendered":"Tampilkan\/berkedip ikon baki tugas Java"},"content":{"rendered":"<h2><a name=\"0\">di Jawa<strong>baki tugas<\/strong>(<strong>baki sistem<\/strong>) ikon<strong>Tampilan\/berkedip<\/strong><\/a><\/h2>\n<p>di Jawa<strong>baki tugas<\/strong>(<strong>baki sistem<\/strong>) ikon ditampilkan dan berkedip.<\/p>\n<p>Kelas utilitas adalah fitur baru yang ditambahkan di Java SE 6 Mustang. <strong>java.awt.SystemTray<\/strong> ,,<strong>java.awt.TrayIcon<\/strong> Gunakan kelas. Kami juga akan memperkenalkan contoh aplikasi sehingga Anda dapat memahami cara menggunakannya.<\/p>\n<h3><a name=\"1\">Fungsi baki sistem (task tray).<\/a><\/h3>\n<p>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.<\/p>\n<ul>\n<li><strong>java.awt.SystemTray<\/strong><br \/>\nKelas SystemTray mewakili baki sistem 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 mungkin ingin menggunakan situs berikut untuk membuat ikon berkedip.<br \/>Buat ikon berkedip dengan mengunggah ikon lokal.<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 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>\nContoh aplikasi menggunakan kelas utilitas baki sistem TaskTrayUtil untuk mengimplementasikan fungsi berikut.<\/p>\n<ol>\n<li>Kapan dimulai<strong>baki tugas<\/strong>ke<strong>ikon<\/strong>Menunjukkan.\n<\/li>\n<li>Klik [tombol berkedip] untuk<strong>baki tugas<\/strong>Ikon akan berkedip.<br \/>\n\tBalon tersebut juga menampilkan pesan &quot;Keluarkan aku dari sini!!&quot;<\/li>\n<li>Klik [tombol Batal] untuk membatalkan kedipan ikon.<\/li>\n<li><strong>baki tugas<\/strong>Klik kiri sekali pada ikon untuk menampilkan jendela utama ke desktop.<\/li>\n<li><strong>baki tugas<\/strong>Klik kanan ikon tersebut untuk menampilkan menu PopupMenu default.<\/li>\n<li>Ketika jendela utama diminimalkan<strong>baki tugas<\/strong>Disimpan di.<\/li>\n<\/ol>\n<h2 class=\"common_title\"><a name=\"4\">Dapatkan 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 bawah. Selain itu, saat kompilasi, harap simpan ikon berikut di lokasi yang sama dengan kode sumber.<\/p>\n<ul>\n<li><strong>Ikon biasa<\/strong>\u3000<a href=\"https:\/\/chat-messenger.com\/images\/tray_icon.gif\" target=\"_blank\"><img 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 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\/mengedipkan ikon baki tugas (system tray) di Java.<br \/>\n *<br \/>\n * \u25c6 Ikhtisar kelas ini<br \/>\n * Kelas TaskTray adalah utilitas yang menangani baki tugas.<br \/>\n * Menyediakan fitur-fitur berikut:<br \/>\n * \u30fbMenampilkan ikon di baki tugas.<br \/>\n * - Menampilkan pesan pop-up di baki tugas.<br \/>\n * - Membuat baki tugas berkedip.<br \/>\n *<br \/>\n * \u25c6 Cara menggunakan<br \/>\n * Teruskan kelas JFrame target ke argumen metode di bawah.<br \/>\n * \u30fbbuat Baki(JFrame targetFrame)<br \/>\n * \u30fbcreateTray (target JFrame akhir, Gambar gambar, menu PopupMenu)<br \/>\n *<br \/>\n *\/<br \/>\nkelas publik TaskTrayUtil {<br \/>\n    bingkai JFrame statis pribadi;<br \/>\n    pribadi statis PopupMenu defaultMenu;<br \/>\n    TrayIcon statis pribadi trayIcon;<br \/>\n    baki SystemTray statis pribadi = SystemTray.getSystemTray();<br \/>\n    Objek statis pribadi INSTANCE_LOCK = Objek baru();<\/p>\n<p>    \/**<br \/>\n     * Contoh eksekusi<br \/>\n     * @param argumen<br \/>\n     *\/<br \/>\n    public static void main(String[] args) {<br \/>\n      mencoba {<br \/>\n          \/\/ Setel LookAndFeel ke Windows<br \/>\n          UIManager.setLookAndFeel(<br \/>\n                  UIManager.getSystemLookAndFeelClassName());<br \/>\n          \/\/ ikon biasa<br \/>\n          Gambar akhir img = Ikon Gambar baru(<br \/>\n                  TaskTrayUtil.kelas.getResource(<br \/>\n                          \u201ctray_icon.gif\u201d)).getImage();<br \/>\n          bingkai JFrame akhir =<br \/>\n              new JFrame(&quot;Tampilkan\/berkedip ikon di baki tugas&quot;);<br \/>\n          bingkai.setSize(300, 100);<br \/>\n          bingkai.setIconImage(img);<br \/>\n          \/\/ Simpan di baki tugas saat jendela diminimalkan<br \/>\n          \/\/ Tambahkan kelas WindowListener seperti yang ditunjukkan.<br \/>\n          frame.addWindowListener(WindowAdapter baru() {<br \/>\n              jendela kekosongan publikIkonifikasi(WindowEvent e) {<br \/>\n                  frame.setVisible(salah);<br \/>\n              }<br \/>\n          });<\/p>\n<p>          JPanel jPanel = JPanel baru();<br \/>\n          jPanel.setLayout(FlowLayout baru());<br \/>\n          jPanel.setSize(Dimensi baru(219, 70));<br \/>\n          \/\/ ikon berkedip<br \/>\n          Gambar akhir imgLight =<br \/>\n              ImageIcon baru(TaskTrayUtil.class.getResource(<br \/>\n                      \u201ctray_icon_light.gif\u201d)).getImage();<br \/>\n          JButton lightButton = JButton baru(&quot;berkedip&quot;);<br \/>\n          lightButton.addActionListener(ActionListener baru(){<br \/>\n              public void actionPerformed(ActionEvent e) {<br \/>\n                  onAndOffLight(imgLight, null);<br \/>\n                  displayMessage(\u201cPesan\u201d, \u201cKeluarkan aku dari sini!!\u201d);<br \/>\n              }<br \/>\n          });<br \/>\n          JButton cancelButton = JButton baru(&quot;batal&quot;);<br \/>\n          cancelButton.addActionListener(ActionListener baru(){<br \/>\n              public void actionPerformed(ActionEvent e) {<br \/>\n                  replaceImageWithDelete(img);<br \/>\n              }<br \/>\n          });<br \/>\n          jPanel.add(lightButton, null);<br \/>\n          jPanel.tambahkan(cancelButton, null);<br \/>\n          frame.add(jPanel);<br \/>\n          \/\/ Akhiri pemrosesan.<br \/>\n          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br \/>\n          \/\/ Menampilkan bingkai di tengah layar.<br \/>\n          frame.setLocationRelativeTo(null);<br \/>\n          \/\/ Buat baki tugas.<br \/>\n          TaskTrayUtil.createTray(bingkai);<br \/>\n          frame.setVisible(benar);<\/p>\n<p>      } tangkapan (Pengecualian e) {<br \/>\n          e.printStackTrace();<br \/>\n      }<br \/>\n    }<br \/>\n    \/**<br \/>\n     *<br \/>\n     *\/<br \/>\n    statis {<br \/>\n        buatPopupMenu();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Menghasilkan menu PopupMenu default untuk ditampilkan di baki tugas.<br \/>\n     *Menu berikut tersedia.<br \/>\n     * \u30fb&quot;Hapus dari baki tugas&quot;<br \/>\n     * Pindahkan aplikasi target dari task tray ke desktop<br \/>\n     * Membawanya keluar.<br \/>\n     * (Aktifkan jendela dan bawa ke depan.)<br \/>\n     * - Hentikan aplikasi yang akan dihentikan.<br \/>\n     *\/<br \/>\n    pribadi statis kekosongan createPopupMenu() {<br \/>\n        MenuItem getTrayItem = new MenuItem(&quot;Hapus dari baki tugas&quot;);<br \/>\n        getTrayItem.addActionListener(ActionListener baru() {<br \/>\n            public void actionPerformed(ActionEvent e) {<br \/>\n                aktif();<br \/>\n            }<br \/>\n        });<br \/>\n        MenuItem exitItem = MenuItem baru(&quot;Keluar&quot;);<br \/>\n        exitItem.addActionListener(ActionListener baru() {<br \/>\n            public void actionPerformed(ActionEvent e) {<br \/>\n                hapusTrayIcon();<br \/>\n                TaskTrayUtil.frame.setVisible(salah);<br \/>\n                TaskTrayUtil.frame.dispose();<br \/>\n                Sistem.keluar(0);<br \/>\n            }<br \/>\n        });<br \/>\n        defaultMenu = Menu Popup baru();<br \/>\n        defaultMenu.tambahkan(getTrayItem);<br \/>\n        defaultMenu.tambahkan(exitItem);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Buat ikon baki dan tambahkan ke baki sistem.<br \/>\n     * Tetapkan pendengar untuk peristiwa yang terjadi pada ikon ke targetFrame<br \/>\n     Mulai *.<br \/>\n     * Event disini adalah ketika icon tray di klik dua kali.<br \/>\n     * Ekstrak aplikasi target.<br \/>\n     * @param targetFrame Aplikasi target<br \/>\n     *\/<br \/>\n    public static void createTray(JFrame targetFrame) {<br \/>\n        createTray(targetFrame, null, null);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Buat ikon baki dan tambahkan ke baki sistem.<br \/>\n     *<br \/>\n     * @param targetFrame Aplikasi target<br \/>\n     * @param image Gambar gambar untuk ditampilkan pada ikon baki.<br \/>\n     * Jika null, dapat diperoleh dari targetFrame dengan getIconImage()<br \/>\n     * Gunakan gambar gambar.<br \/>\n     * @param menu PopupMenu untuk ditampilkan di baki tugas.<br \/>\n     * Jika null, tampilkan PopupMenu default.<br \/>\n     *\/<br \/>\n    public static void createTray(targetFrame JFrame akhir, Gambar gambar,<br \/>\n            Menu Menu Popup) {<br \/>\n        \/\/ Keluar jika baki sistem tidak didukung.<br \/>\n        if (!SystemTray.isSupported()) {<br \/>\n            kembali;<br \/>\n        }<br \/>\n        TaskTrayUtil.frame = targetFrame;<br \/>\n        jika (gambar == nol) {<br \/>\n            gambar = targetFrame.getIconImage();<br \/>\n        }<br \/>\n        jika (menu == batal) {<br \/>\n            menu = defaultMenu;<br \/>\n        }<br \/>\n        trayIcon = TrayIcon baru(gambar, targetFrame.getTitle(), menu);<br \/>\n        trayIcon.setImageAutoSize(benar);<br \/>\n        trayIcon.addMouseListener(MouseAdapter baru(){<br \/>\n            public void mouseClicked(MouseEvent e) {<br \/>\n                if (SwingUtilities.isLeftMouseButton(e)) {<br \/>\n                    aktif();<br \/>\n                }<br \/>\n            }<br \/>\n        });<br \/>\n        mencoba {<br \/>\n            baki.tambahkan(trayIcon);<br \/>\n        } tangkapan (AWTException e1) {<br \/>\n            e1.printStackTrace();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Hapus ikon dari baki tugas.<br \/>\n     * Harus dipanggil saat aplikasi keluar.<br \/>\n     *\/<br \/>\n    public static void hapusTrayIcon() {<br \/>\n        baki.hapus(trayIcon);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Membuat ikon baki tugas berkedip.<br \/>\n     * @param pesan jika perlu saat ikon berkedip diklik<br \/>\n     * Atur pesan untuk ditampilkan.<br \/>\n     *\/<br \/>\n    public static void onAndOffLight(Gambar lightImg, Pesan string) {<br \/>\n        replaceImage(lightImg);<br \/>\n        ChangeLightImgAdapter adap =<br \/>\n            new TaskTrayUtil().new ChangeLightImgAdapter(pesan);<br \/>\n        trayIcon.addMouseListener(adap);<br \/>\n        frame.addWindowListener(adap);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ubah ikon baki tugas.<br \/>\n     * @param image Ubah hanya jika berbeda dari ikon saat ini.<br \/>\n     *\/<br \/>\n    public static void replaceImage(Gambar gambar) {<br \/>\n        disinkronkan (INSTANCE_LOCK) {<br \/>\n            if (!image.equals(trayIcon.getImage())) {<br \/>\n                trayIcon.setImage(gambar);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ubah ikon baki tugas.<br \/>\n     * *Jika Anda ingin mengembalikan ikon yang berkedip karena alasan tertentu,<br \/>\n     * Tampaknya tidak ada gunanya kecuali Anda menghapusnya dengan {@link SystemTray#remove(TrayIcon)}).<br \/>\n     * @param image Ubah hanya jika berbeda dari ikon saat ini.<br \/>\n     *\/<br \/>\n    public static void replaceImageWithDelete(Gambar gambar) {<br \/>\n        disinkronkan (INSTANCE_LOCK) {<br \/>\n            if (!image.equals(trayIcon.getImage())) {<br \/>\n                baki.hapus(trayIcon);<br \/>\n                trayIcon.setImage(gambar);<br \/>\n                mencoba {<br \/>\n                    baki.tambahkan(trayIcon);<br \/>\n                } tangkapan (Pengecualian e) {<br \/>\n                    e.printStackTrace();<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Menampilkan pesan pop-up di baki tugas.<br \/>\n     * keterangan @param<br \/>\n     * @param teks<br \/>\n     *\/<br \/>\n    public static void displayMessage(String caption, String text) {<br \/>\n        if (keterangan != null || teks != null) {<br \/>\n            trayIcon.displayMessage(keterangan, teks,<br \/>\n                    TrayIcon.MessageType.INFO);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Pindahkan aplikasi target dari task tray ke desktop<br \/>\n     * Membawanya keluar.<br \/>\n     *\/<br \/>\n    pribadi statis kekosongan aktif() {<br \/>\n        \/\/ Mengembalikan status frame ke normal.<br \/>\n        TaskTrayUtil.frame.setExendedState(JFrame.NORMAL);<br \/>\n        TaskTrayUtil.frame.setAlwaysOnTop(benar);<br \/>\n        TaskTrayUtil.frame.setVisible(benar);<br \/>\n        TaskTrayUtil.frame.setAlwaysOnTop(false);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Acara yang akan dihasilkan ketika 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 baki tugas diklik<br \/>\n         * Tampilkan pesan popup.<br \/>\n         *\/<br \/>\n        public void mousePressed(MouseEvent e) {<br \/>\n            TaskTrayUtil.displayMessage(null, lightImageText);<br \/>\n        }<\/p>\n<p>        \/**<br \/>\n         * Berkedip saat aplikasi target aktif<br \/>\n         * Kembalikan ikon.<br \/>\n         *\/<br \/>\n        jendela kekosongan publikDiaktifkan(WindowEvent e) {<br \/>\n            TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame<br \/>\n                    .getIconImage());<br \/>\n            TaskTrayUtil.frame.removeWindowListener(ini);<br \/>\n            TaskTrayUtil.trayIcon.removeMouseListener(ini);<br \/>\n        }<\/p>\n<p>        jendela kekosongan publikTertutup(WindowEvent e) {}<\/p>\n<p>        penutupan jendela kekosongan publik(WindowEvent e) {}<\/p>\n<p>        jendela kekosongan publikDinonaktifkan(WindowEvent e) {}<\/p>\n<p>        jendela kekosongan publikDeiconified(WindowEvent e) {}<\/p>\n<p>        jendela kekosongan publikIkonifikasi(WindowEvent e) {}<\/p>\n<p>        jendela kekosongan publikTerbuka(WindowEvent e) {}<\/p>\n<p>        kekosongan publik mouseClicked(MouseEvent e) {}<\/p>\n<p>        kekosongan publik 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>Tampilkan\/kedipkan ikon baki tugas (system tray) di Java \u2026<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/906"}],"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}]}}